J'ai des problèmes pour accéder à la ligne de commande du processus à partir du programme d'assemblage Linux 64 bits. Pour reproduire cela avec un minimum de code, je fait ce programme 32 bits qui imprime 5 premiers caractères du nom du programme:Ligne de commande de processus sous Linux 64 bits
.section .text .globl _start _start: movl %esp, %ebp movl $4, %eax # write movl $1, %ebx # stdout movl 4(%ebp), %ecx # program name address (argv[0]) movl $5, %edx # hard-coded length int $0x80 movl $1, %eax movl $0, %ebx int $0x80
Ce programme fonctionne. Quand je le traduis en 64 bits et tourne sous Linux 64, il n'imprime rien:
.section .text .globl _start _start: movq %rsp, %rbp movq $4, %rax movq $1, %rbx movq 8(%rbp), %rcx # program name address ? movq $5, %rdx int $0x80 movq $1, %rax movq $0, %rbx int $0x80
Où est mon erreur?