Descrição Assembly de x86
Assembly - linguagem que surgiu para representar as instruções por símbolos e não por números (linguagem simbólica), conhecida como linguagem de montagem.
Qual o mais fácil de lembrar 10101011 ou ADD ?
Necessidade de conversão dos símbolos para linguagem de máquina, linguagem que o µP entende. O processo de conversão (tradução) é chamado de montagem e é realizada por um programa denominado Montador (assembler).
Arquitetura
O Intel x86 é uma arquitetura CISC de 32 bits. Os registradores de uso geral (todos de 32 bits) são EAX, EBX, ECX, EDX, ESI e EDI. O apontador ou contador de instruções é o EIP, os registradores ESP e EBP gerenciam a pilha de dados. O registrador EFLAGS é uma coleção de sinalizadores de status e controle
O Intel x86 possui ainda registradores de 16 bits para segmentos de memória CS, DS, SS, ES, FS, GS. Registradores para ponto flutuante ST0–ST7 (32 bits), vetores SIMD (Single Instruction, Multiple Data) MM0–MM7 (64 bits) e XMM0-XMM7 (128 bits).
O Mac OS X segue o modelo ILP32, na qual inteiros longos (long int) e ponteiros (void*) são de 32 bits. O compilador GCC utiliza a convenção da AT&T, as instruções encontram-se na ordeminstrução origem, destino (guarde bem isso). Nos manuais da Intel a ordem é invertida para instrução destino, origem.
Utiliza-se o sufixo l (long word ou double word), como em pushl EAX, para instruções que operam com valores de 32 bits, o sufixo w (word) corresponde a valores de 16 bits e sufixo b(byte) para valores de 8 bits. Quando não for especificado um sufixo, assumem-se valores de 32 bits para a operação.
Montagem de Programa
Principais funções:
Substituir código de operações simbólicas
Substituir nomes simbólicos de endereços
Reservar espaço de memória
Converter constantes
Examinar a correção de cada instrução
Características da Programação Assembly
Declaração e uso de label (corresponde a uma posição de memória e substitui um endereço);
Existência de diretivas