Ybadoo - Soluções em Software Livre
Tutoriais
Compiladores

(Ricarte, 2008) Um dos projetistas do processador hipotético sugeriu que, em vez das instruções LOAD e STORE, uma única instrução MOVE deveria ser utilizada; nesse caso, a ordem dos operandos serviria para diferenciar a direção da transferência. Por exemplo, MOVE 1, R0 indicaria a transferência do conteúdo da posição 1 de memória para o registrador R0. Já a instrução MOVE R0, 4 indicaria a transferência do conteúdo do registrador R0 para a posição de memória 4. Por que os projetistas teriam mantido duas instruções separadas?

 

Porque a linguagem de máquina produzida não seria capaz de identificar a operação desejada pelo usuário. Por exemplo, a instrução MOVE 1, R0 e a instrução MOVE R0, 4, apresentadas no enunciado do exercício, produzem a mesma linguagem de máquina, a saber, 00000100 (considerando que 00 seja o código da instrução MOVE).

Para que a linguagem de máquina produzida seja capaz de identificar a operação desejada pelo usuário em linguagem simbólica, o tradutor deve produzir instruções diferentes em linguagem de máquina, uma correspondente ao LOAD e outra ao STORE, como empregado atualmente pelo processador hipotético.

Um dos critérios mais importantes para julgar uma linguagem de programação é a facilidade com que os programas podem ser lidos e entendidos. Antes de 1970, o desenvolvimento de software era muito imaginado em termos da escrita do código. Na década de 70, entretanto, o conceito de ciclo de vida do software foi desenvolvido; a codificação foi relegada a um papel muito menos importante, e a manutenção foi reconhecida como uma parte importante do ciclo, especialmente em termos de custo. Uma vez que a facilidade de manutenção é determinada, em grande parte, pela legibilidade dos programas, ela tornou-se uma medida importante da qualidade dos programas e das linguagens de programação (Sebesta, 2000).

A utilização da instrução MOVE não reduziria a quantidade de instruções em linguagem de máquina, além de prejudicar a legibilidade do programa escrito em linguagem simbólica, pois as instruções LOAD e STORE apresentam claramente o significado de suas operações, enquanto que na instrução MOVE, o programador teria um pouco mais de dificuldade para compreender o fluxo da informação (memória → processador ou processador → memória).

Ricarte, Ivan. (2008). Introdução à Compilação. Rio de Janeiro: Elsevier. 264 páginas.