[Prévia] [Próxima] [Prévia por assunto] [Próxima por assunto]
[Índice cronológico] [Índice de assunto]

Re: Dúvida na instrução "PUSH"



On Wed, 23 Apr 2003, Francisco Reverbel wrote:

> (Espero que os problemas da lista tenham cessado... Estou torcendo
> para que vocês não recebam um montão de cópias desta mensagem!)
> 
> O 'push 7' empilha uma dword, decrementando o esp de 4. Em outras
> palavras, o NASM traduz 'push 7' como se fosse 'push dword 7'.
> Para obter essa informação eu escrevi quatro linhas em linguagem de 
> montagem e fiz o NASM gerar esta listagem:
> 
>   1                                          section .text
>   2 00000000 66680700                        push    word 7
>   3 00000004 6807000000                      push    dword 7
>   4 00000009 6807000000                      push    7
> 
> Reparem que o código de máquina montado no endereço relativo 9 (linha
> 4) é o mesmo montado no endereço relativo 4 (linha 3).
> 
> Eu preferiria que o NASM não aceitasse 'push 7'. Acho que a coisa
> ficaria mais clara se ele obrigasse programador a escrever 
> explicitamente 'push dword 7' ou 'push word 7'...

	Bem, o gas exige um pushl ou um pushw... Eu acho bem chato...

	Bem, acho que o jeito de lembrar se são 4 ou 2 bytes é lembrar que
a máquina está funcionando em modo 32 bits, então o default para tudo é 4 
bytes.

	Na época em que se rodava só código de 16 bits, o push 7 passa a
ser de 2 bytes. Recordar é viver.

	André