Pergunta

Usando o Objdump para entender um binário e percebo que não sou fluente o suficiente na sintaxe do ASM. O que significa a seguinte noção?

xor    %al,-0x1(%edx,%ecx,1)

E enquanto você está nisso - o que devo procurar para encontrar documentos sobre essas noções?

Foi útil?

Solução

Os parênteses são compensações de memória:

-0x1(%edx,%ecx,1) (Sintaxe AT&T) é igual a [edx+ecx*1-1] (Sintaxe Intel)

Guia rápido para Sintaxe da Assembléia AT&T (conforme seu pedido).

Outras dicas

Este é um exclusivo ou com conteúdo do byte baixo (%Al) do registro 'A' e o conteúdo da memória no endereço, que é a soma dos registros de 32 bits 'D' (%EDX), 'C 'Multiplicado por 1 (%Ecx, 1) e -1. O resultado é escrito de volta para %Al. Em c

al ^= (char*)(edx+ecx*1 - 1);

Você pode procurar coisas assim em Sandpile ou na documentação Intel/AMD.

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