R
Es ist besser, für eine neue Frage einen neuen Thread zu starten. Da du mit 'RBP' arbeitest, gehe ich mal von einem 64-bit-Programm in Linux aus.
re342 schrieb:
#define n -20(%rbp)
klappt in AT&T leider nicht...
Bei GAS habe ich etwas Vergleichbares (noch) nicht gefunden. Aber Du kannst den Preprozessor von GCC anzapfen, wenn Du als Dateinamen-Suffix ein großes .S nimmst und GCC als Assembler/Linker nimmst:
# Name: hallo.S
# Assemblieren & Linken: gcc -m64 hallo.S
# Ausführen: ./a.out
.global main
.data
hallo: .asciz "Welt"
format: .asciz "%u Hallo %s\n"
.text
#define arg1 16(%rbp)
#define arg2 24(%rbp)
#define loc1 -8(%rbp)
upro:
push %rbp
mov %rsp, %rbp
sub $8, %rsp
movq $1, loc1
mov arg1, %rdi
mov loc1, %rsi
mov arg2, %rdx
xor %rax, %rax
call printf
incq loc1
mov arg1, %rdi
mov loc1, %rsi
mov arg2, %rdx
xor %rax, %rax
call printf
leave
ret
main:
push $hallo
push $format
call upro
add $16, %rsp
mov $format, %rdi
mov $99, %rsi
mov $hallo, %rdx
xor %rax, %rax
call printf
mov $0, %rax
ret
viele grüße
ralph