[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: Francisco Reverbel <reverbel@xxxxxxxxxx>
- Date: Wed, 23 Apr 2003 11:48:26 -0300 (EST)
Olá Tiago e lista,
(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'...
Reverbel
On Mon, 21 Apr 2003, Tiago Motta Jorge wrote:
> Olá,
>
> Estive observando o seguinte fato:
>
> push eax -> decrementa o esp de 4 e coloca o conteúdo de eax a partir
> do novo esp.
> push ax -> decrementa o esp de 2 e coloca o conteúdo de ax a partir
> do novo esp.
>
> Minha dúvida aparece aqui:
>
> push 7 -> decrementa o esp de ? e ...
>
> E ainda por cima o montador não pede para informarmos o tamanho da
> operação desejada. Tudo funciona como esperaríamos. Mas não sei quanto
> devo adicionar ao esp para liberar a memória que este push utilizou.
>
> Desde já agradecido,
> Tiago Motta Jorge.
>