我在汇编处的代码中添加了两个数字:
.code32
.data
liczba1: .long 0x00000001,0x00000001,0x00000001,0x00000001
liczba2: .long 0x00000001,0x00000001,0x00000001,0x00000001
.text
.global main
main:
movl $3, %ecx
clc
petla:
cmpl $0, %ecx
je ostatnia
movl liczba1(,%ecx,4), %eax
movl liczba2(,%ecx,4), %ebx
adcl %eax,%ebx
pushl %ebx
decl %ecx
jmp petla
ostatnia:
movl liczba1(,%edi,4), %eax
movl liczba2(,%edi,4), %ebx
adcl %eax,%ebx
pushl %ebx
movl $0, %eax
movl $0, %ebx
adcl %eax,%ebx
pushl %ebx
jmp koniec
koniec:
movl $0, %eax
movl $1, %ebx
int $0x80
当我在gdb中运行它时,我得到: 程序接收信号SIGSEGV,分段故障。 petla()
中的0x00000000004000cc有人知道,为什么?