Как исправить ошибку «0x00000000004000e7 in ?? ()» в сборке x86 - PullRequest
0 голосов
/ 18 апреля 2019

Я пишу пузырьковую сортировку в сборке x86.Я использовал DDD, чтобы выяснить состояние регистров и информацию о стеке.

Я прошел программу и наткнулся на ошибку 0x00000000004000e7 in ?? ().Я хочу выяснить, почему это произошло.

Это мой bubble_sort.s

.section .text
.global _start

_start:
movq $0, %rsi           #i = 0;
movq $0, %rdi           #j = 0;
movq $4, %rbx           #N = 4;

subq $40,%rsp           
movq $4, (%rsp)         #a[0] = 4;
movq $3, 4(%rsp)        #a[1] = 3;
movq $2, 8(%rsp)        #a[2] = 2;
movq $1, 12(%rsp)       #a[3] = 1;

subq $1, %rbx           #N = N - 1
cmpq %rsi, %rbx         #i - (N-1)
jge .DONE1
.LOOP1:
    movq %rbx, %r15     #%rdx: N - 1
    subq %rsi, %r15     #%rbx: N-1-i
    cmpq %rdi, %r15     #if(j < N-1-i)
    jge .DONE2
    .LOOP2:
        movq (%rsp, %rdi, 4), %r8       
        xchg %r8, 1(%rsp, %rdi, 4)      
        movq %r8, (%rsp, %rdi, 4)       
        addq $1, %rdi   #j = j+1
    cmpq %rdi, %r15     #compare j with N-1-i
    jl .LOOP2
    .DONE2:
    addq $1, %rsi
cmpq %rsi, %rbx         #i - (N-1)
jl .LOOP1
.DONE1:

Я прошел.Когда я запускаю movq %rbx, %r15 #%rdx: N - 1, DDD показал мне 0x00000000004000e7 in ?? ().

Затем я запускаю следующую строку, DDD показал мне Cannot find bounds of current function.

Я озадачен, и я не понимаюпочему это произошлоНе могли бы вы сказать, какую ошибку я допустил?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...