2012-04-09 1 views
0

Je suis en train de produire un code d'assemblage comme celui-ci (pour que cela fonctionne avec nasm)De quel style s'agit-il (intel, att ... etc?) Et comment puis-je le produire?

;hello.asm 
[SECTION .text] 

global _start 


_start: 

    jmp short ender 

    starter: 

    xor eax, eax ;clean up the registers 
    xor ebx, ebx 
    xor edx, edx 
    xor ecx, ecx 

    mov al, 4  ;syscall write 
    mov bl, 1  ;stdout is 1 
    pop ecx   ;get the address of the string from the stack 
    mov dl, 5  ;length of the string 
    int 0x80 

    xor eax, eax 
    mov al, 1  ;exit the shellcode 
    xor ebx,ebx 
    int 0x80 

    ender: 
    call starter ;put the address of the string on the stack 
    db 'hello' 

Tout d'abord, quel style assemblage est-ce et deuxièmement, comment puis-je produire à partir d'un fichier C en utilisant une commande semblable à gcc -S code.c -o code.S -masm=intel

+0

'-masm = intel' est exactement ce qui produit ce style (syntaxe Intel, par opposition à la syntaxe AT & T par défaut). Mais cela ne gouverne que les instructions réelles. Des choses comme '[SECTION]' sont spécifiques à NASM, et GCC génère toujours celles spécifiques au GAS. –

+0

Alors comment se fait-il que je lance la commande ci-dessus avec (-masm = intel) et que j'essaie d'exécuter la commande 'nasm -f elf code.S' Je reçois beaucoup d'erreurs? – Nosrettap

+1

Parce que nasm n'est pas gazeux. Les directives sont fausses. –

Répondre

1

Ceci est de style Intel.

Quel est le problème avec la ligne de commande que vous avez écrite dans la question?

+0

C'est juste que si j'utilise cette commande, et puis j'essaie d'utiliser la commande 'nasm -f elf code.S' je reçois beaucoup d'erreurs – Nosrettap

Questions connexes