0
我試圖在x86-64中掃描並存儲雙字數組。 我已經找遍了,似乎無法找到任何我明白的東西。 我的程序應該掃描並打印雙字數組的所有元素。在x86程序集中掃描數組
我看了很多例子,但我似乎無法使用它們 - 它們給我編譯錯誤。 此外,我似乎無法使用類似 - MOVQ%RSI,[陣列+ 8]
這裏是我的代碼:
.data
.comm arr, 800 # int arr[100];
.comm p, 8 # int pointer;
.comm c, 8
.comm c2, 8
.comm c3, 8
arr dd 100 DUP(0)
.text
format1:
.string "Enter integers followed by EOF\n"
format2:
.string "%ld"
format3:
.string "a is %ld\n"
.globl main
main: # main()
movq $format1, %rdi # printf("Enter integers followed by E
movq $0, %rax #
call printf #
movq $arr, %r8
movq $0, c
movq $0, c2
whileloop:
movq $format2, %rdi # scanf("%ld",&a);
movq $p, %rsi #
movq %rsi, %r8
movq $0, %rax #
call scanf #
cmpq $0, %rsi # if(arr[ptr] == 0)
je endwhileloop
addq $8, %r8
addq $1, c
jmp whileloop
endwhileloop:
movq $format3, %rdi # printf("a=%ld",a);
movq $p,%rsi #
movq (%rsi),%rsi #
movq $0, %rax #
call printf #
ret
這是不正確的存儲陣列在一個事實「常用3」。 謝謝!
什麼彙編您使用的?除了註釋和指令外,這看起來像gas語法。 –
另外:爲什麼不用C編寫簡單的程序,然後反彙編呢? –
AMD x86-64。我也嘗試過。將再次放棄它。謝謝 – newton52