[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"



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.
>