Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/assembly/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Assembly 装配:分段falut_Assembly_Att - Fatal编程技术网

Assembly 装配:分段falut

Assembly 装配:分段falut,assembly,att,Assembly,Att,我在汇编程序at&t中有代码,它添加了两个数字: .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 osta

我在汇编程序at&t中有代码,它添加了两个数字:

.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,分段故障。 0x00000000004000cc,单位为petla()


有人知道,为什么?

调试器知道。那么,哪个指令位于0x4000cc?你为什么使用edi而不初始化它?它的PUSH%ebx。我已经解决了这个问题,将edi更改为ECXB,但我认为,问题是如果您对代码做了任何更改,ecx不会减少更新问题的时间。