Как отладить проект ARM, который вызывает ошибку сегментации? - PullRequest
0 голосов
/ 05 апреля 2020

Я работаю над проектом сборки ARM, где мне нужно сгенерировать массив, затем передать массив в функцию, которая будет генерировать случайные числа для заполнения массива, а затем в другой функции распечатать массив. Но когда он доходит до конца первой функции, он вызывает ошибку сегментации.

Я также предполагаю, что, если он дойдет до второй функции, это вызовет аналогичную ошибку, но первая функция сначала Угадай. Я проверил указатель sp и переключился на операцию pu sh, чтобы попытаться вывести число как str r2, [sp, r1 (смещение)], поскольку оно также вызывало ошибку сегментации.

Это где находится main

.cpu cortex-a53
.fpu neon-fp-armv8

.data

.text
.align 2
.global main
.type main, %function

main:

    push {fp, lr}
    add fp, sp, #4

    sub sp, sp, #80

    mov r0, #0
    bl time
    bl srand

    mov r0, sp
    bl roll_dice

    mov r0, #0
    sub sp, fp, #4
    pop {fp, pc}


Это функция, в которую я пытаюсь передать массив, а затем заполнить массив, который позже я буду использовать в другой функции, чтобы распечатать все это

.cpu cortex-a53
.fpu neon-fp-armv8

.data

.text
.align 2
.global roll_dice
.type roll_dice, %function

roll_dice:

    push {fp, lr}
    add fp, sp, #4

    mov sp, r0
    add sp, sp, #80

    mov r5, #0 @counter
    mov r6, #6 @number of modulus   
    mov r3, #0

not_yet:

    bl rand
    mov r1, r0  

    udiv r2, r1, r6 
    mul r2, r2, r6
    sub r2, r1, r2

    add r2, r2, #1  
    push {r2}

    add r5, r5, #1

    cmp r5, #20
    bne not_yet

    mov r0, #0
    sub sp, fp, #4
    pop {fp, pc}

Я даже не буду беспокоиться о своей последней функции, потому что я думаю, что если я пойму, что с ними не так, я смогу выяснить последнюю.

...