[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"
- Subject: Re: Dúvida na instrução "PUSH"
- From: Andre Uratsuka Manoel <andre@xxxxxxxxxxxxx>
- Date: Wed, 23 Apr 2003 13:59:09 -0300 (BRT)
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é