Assembly 装配臂-分段故障
在这个练习中,我必须将这个数组中的所有偶数都设置为0,但是当我运行这个程序时,我遇到了一个分段错误。有人能帮我吗?还有,我如何在我的树莓圆周率上打印结果?谢谢大家! 编辑:我已将评论从意大利语改为英语。希望它更容易理解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
.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可以工作。谢谢!我已经修正了我的代码,但是我不知道如何打印我的数组的结果来检查它是否正确工作。也许你可以考虑发布一个关于这个问题的单独的问题?如果我的回答有帮助,请记住接受它:-)谢谢!我已经修正了我的代码,但是我不知道如何打印我的数组的结果来检查它是否正确工作。也许你可以考虑发布一个关于这个问题的单独的问题?如果我的回答有帮助,请记住接受它:-)