Escolar Documentos
Profissional Documentos
Cultura Documentos
Consulta Makefiles Assembly
Consulta Makefiles Assembly
Consulta Makefiles Assembly
# exemplo de makefile
media.o: media.c
gcc -c media.c -o media.o
main.o: main.c
gcc -c main.c -o main.o
run: pmedia
./pmedia
clean:
rm media.o main.o pmedia
Programação Assembly
Constantes:
As constantes são precedidas por um '$'. Exemplos: $10, $n. Este último exemplo representa o endereço correspondente à etiqueta n.
Registos:
Um operando do tipo registo inicia sempre por '%'. Podem-se usar de seguida os 8 registos de 32 bits de uso geral (eax, ebx, ecx, edx, ebp, edi, esi e esp).
O registo esp esta reservado para apontador para o topo da stack. Pode-se usar, da mesma forma, os resgistos de 16 e 8 bits (ver lista de registos).
Endereços:
Um operando do tipo endereço refere-se a um valor num local de memória. O exemplo mais comum é a etiqueta de uma variável ou instrução.
Implícitos:
Algumas instruções têm operandos implícitos, como por exemplo o idivl que usa os registos eax e edx.
2. Alocação de Memória
.data
v32: .long 0 # 32 bits, valor inicial 0
v16: .word 0xffff # 16 bits, todos a 1
v8: .byte '-' # 8 bits, inicializado com o código ascii de '-'
vs: .ascii “input” # string com 5 bytes
vs0: .asciz “input” # string com 6 bytes, o último é o zero.
.align 4 # alinhar num endereço múltiplo de 32
pilha: .skip 1024 # “reservar” 1024 bytes
2. Flags
D: Direction 1= sentido de processamento das operações de strings do endereço maior para o menor
I: Interrupt Se as interrupções podem ocorrer. 1=interrupções activas.
T: Trap Modo passo-a-passo para depuração
C: Carry O Resultado da operação sem sinal é muito grande ou inferior a zero. 1=excesso
O: Overflow O resultado da operação com sinal é muito grande ou muito pequena. 1=overflow/underflow
S: Sign Sinal do resultado. Apenas para inteiros. 1=negativo / 0=positivo
Z: Zero O resultado da operação é zero. 1=zero
A: Aux. Carry Similar ao Carry mas apenas para o nibble menos significativo
P: Parity 1=O resultado tem um número para de bits a 1.
3. Instruções
Notas:
Formato geral das instruções: instr[b|w|l] origem, destino
O b, w e l no final do nome da instrução indicam o tamanho dos operandos (b=byte; w=word; l=long)
As letras nos operandos indicam o tipo dos operandos (r=register; a=address; c=constant)
O número 32 nos operandos indica o tamanho do operando. Se a instrução termina em l os operandos serão normalmente de 32 bits.