Ale*_*lex 4 arrays assembly gdb nasm
我的 nasm x86 汇编代码包含以下内容:
; The code should mimic the following C-code:
; int a[10];
; for (int i = 0; i < 10; i++){
; a[i] = i;
; }
SECTION .data
arraylen dd 10
SECTION .bss
array RESD 10
SECTION .text
global main
main:
mov ecx, 0
mov eax, 0
loop:
inc ecx
mov dword [array+eax*4], ecx
inc eax
cmp ecx, arraylen
jl loop
end:
mov ebx, 0
mov eax, 1
int 0x80
Run Code Online (Sandbox Code Playgroud)
现在我想要的是检查这段代码是否在 gdb 中工作。但是,我如何打印array?
print array只返回$1 = 1.
print array + X不幸的是,这是一个算术运算,ieegprint array + 50实际上打印 1+50 =51而不是不存在的第 51 个数组元素。
你可以做:
(gdb) x/10 &array
0x8049618: 1 2 3 4
0x8049628: 5 6 7 8
0x8049638: 9 10
Run Code Online (Sandbox Code Playgroud)
PS:您的代码已损坏,您需要cmp ecx, [arraylen].