Assembly 装配臂-分段故障

Assembly 装配臂-分段故障,assembly,raspberry-pi,segmentation-fault,arm,armv7,Assembly,Raspberry Pi,Segmentation Fault,Arm,Armv7,在这个练习中,我必须将这个数组中的所有偶数都设置为0,但是当我运行这个程序时,我遇到了一个分段错误。有人能帮我吗?还有,我如何在我的树莓圆周率上打印结果?谢谢大家! 编辑:我已将评论从意大利语改为英语。希望它更容易理解 .data v: .word 1,2,3,4,5,6,7,8 @ at the end I have to get 1,0,3,0,5,0,7,0 .text

在这个练习中,我必须将这个数组中的所有偶数都设置为0,但是当我运行这个程序时,我遇到了一个分段错误。有人能帮我吗?还有,我如何在我的树莓圆周率上打印结果?谢谢大家!

编辑:我已将评论从意大利语改为英语。希望它更容易理解

                .data
v:              .word 1,2,3,4,5,6,7,8   @ at the end I have to get 1,0,3,0,5,0,7,0
                .text
                .global main
main:           mov r0, #8              @ dimension of my array
                ldr r1, =v              @ address of my array
                push {lr}               

                mov r3, #4              @ index = 1

loop:           cmp r3, #32             @ condition of the loop
                bge exit                @ if r3 is greather or equal exit from the loop

                ldr r1, [r1, r3]        @ load the element of my array of index r3 in r1
                mov r1, #0              @ set my even element to 0
                str r1, [r1, r3]
                add r3, r3, #8          @ increment my index of 2 position
                b loop                  @ back to loop function

exit:           pop {pc}                @ quit from my loop function and back to main

请回答有关StackOverflow的问题,其中包括源代码中的注释(最好是标签),因为这些注释对试图帮助您使用代码的人来说和对您来说一样重要。幸运的是,我会说一些意大利语

问题是您正在使用
r1
。它会将数组指针保持到

ldr r1, [r1, r3]
此时它保存数组元素的内容。如果您不再需要数组指针,那么这当然很好,但您确实需要;线路呢

str r1, [r1, r3]

是一个死赠品,因为它试图将
r1
的值存储在
r1+r3
的值给定的地址,这不太可能是正确的,当然在您的情况下也不正确。

请回答有关StackOverflow的问题,其中包括源代码中的注释(最好是标签)因为这些对那些试图帮助你编写代码的人来说和他们对你一样重要。幸运的是,我会说一些意大利语

问题是您正在使用
r1
。它会将数组指针保持到

ldr r1, [r1, r3]
此时它保存数组元素的内容。如果您不再需要数组指针,那么这当然很好,但您确实需要;线路呢

str r1, [r1, r3]

是一个死赠品,因为它试图将
r1
的值存储在
r1+r3
的值给定的地址,这不太可能是正确的,当然在您的情况下也不正确。

通过
mov r1,#0
销毁数组指针不是一个好主意。PS:学习使用调试器。谢谢!作为调试器,您建议使用gbd吗?是的,gdb可以工作。通过
mov r1、#0
销毁数组指针不是一个好主意。PS:学习使用调试器。谢谢!作为调试器,您建议使用gbd吗?是的,gdb可以工作。谢谢!我已经修正了我的代码,但是我不知道如何打印我的数组的结果来检查它是否正确工作。也许你可以考虑发布一个关于这个问题的单独的问题?如果我的回答有帮助,请记住接受它:-)谢谢!我已经修正了我的代码,但是我不知道如何打印我的数组的结果来检查它是否正确工作。也许你可以考虑发布一个关于这个问题的单独的问题?如果我的回答有帮助,请记住接受它:-)