Pergunta

Pelo que li sobre mov, ele copia o segundo argumento para o primeiro argumento.Então, o que isso faz?

movl    8(%ebp),    %edx

Ele copia tudo o que está em edx para o primeiro parâmetro da função (uma vez que um deslocamento de +8 de ebp é um parâmetro)?

Acho que isso realmente significa mover o primeiro parâmetro para o registro edx, mas li na Wikipedia que é o contrário?

Foi útil?

Solução

movl 8(%ebp), %edx

está em "AT&T Syntax";nesta sintaxe, a origem vem primeiro e o destino depois.Então, sim, sua crença está correta.A maior parte da documentação usa a "sintaxe Intel", que tem a ordem inversa.Esta é uma fonte de confusão considerável para pessoas novas no assembly x86.

Na sintaxe da Intel, sua instrução seria escrita:

mov edx, [ebp + 8]

Observe a ausência de % antes dos nomes de registro, o uso de colchetes em vez de parênteses para o endereço e a falta de um sufixo l na instrução.Essas são dicas mortas para saber qual forma de montagem você está olhando.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top