arrays - 如果我尝试使用循环打印所有 argv 参数,则会出现分段错误
问题描述
.global main
.type main%function
@ r4 = argc
@ r5 = current offset
@ r6 = end offset
@ r7 = array argv
main:
mov r4,r0
ldr r0,=message
mov r5,#0 // initialize offset
mov r6,#4
mul r6,r4,r6 // calculate end offset
mov r7,r1 // put array argv in r7
loop:
ldr r1,[r7,r5] // load the argv element with offset r5
push {ip,lr} // save lr
bl printf
pop {ip,lr}
add r5,r5,#4 // go to next word
cmp r5,r6
bne loop // if I haven't reached the end offset, it does another cycle
end:
mov r0,#0 // clear exit code
bx lr // returns
message:
.asciz "%s\n"
输出:
$ ./a.out a
./a.out
Segmentation fault
但:
$ ./a.out
./a.out
所以很明显,当我尝试访问数组的下一个元素时问题就来了......真的不知道为什么......我是手臂和装配的新手......
解决方案
推荐阅读
- ruby-on-rails - 使用 Devise 和 Mongoid 启动 Rails 5 项目
- jquery - 通过 jQuery AJAX 获取 xls 文件会中断文件
- bash - 如何在bash中列出名称中带有空格的子目录
- python - theano.function 如何成为 python 中另一个函数的输入?
- javascript - 返回的 Ajax 结果,在 datalist 中循环返回的对象
- arrays - MATLAB:将 N x 4 数组置换和重塑为 2 x 2 x N 数组
- android - gradle 版本在 Android Studio 中的位置
- sql - 在 SQL 中,我们如何使用 LIKE 匹配最多但不超过多个通配符?
- c - 关于指针的问题
- c++ - 我可以将值分配到移动位置吗?