assembly - 如果我尝试“手动”访问它们,我只打印部分字符串
问题描述
这不起作用:
.global main
.type main%function
main:
ldr r4,[r1]
mov r1,r4
add r1,r1,#4 // I go to the next argv
ldr r0,=message
b printf
message:
.asciz "%s\n"
但输出是:
$ ./a.out a b c
out
这虽然有效:
.global main
.type main%function
main:
ldr r4,[r1,#4] // this works, if I write #4 HERE
mov r1,r4
//add r1,r1,#4 // commented
ldr r0,=message
b printf
message:
.asciz "%s\n"
输出:
$ ./a.out a b c
a
mov r1,r4
另外,如果 MOV 只能移动 8 位立即数/数据,我不明白 MOV 怎么可能移动另一个寄存器(在行中)中的内存地址(32 位) ...
解决方案
推荐阅读
- magento - 在小部件中重现脚本(Magento 电子商务)
- html - 无法弄清楚如何使我的可折叠导航栏按钮不总是可见(Bootstrap v.3)
- jsonata - 查找包含文本的字段并将其替换为另一个文本
- python-3.x - 如何根据扩展名组织文件系统
- cluster-computing - 如何使用 Infinispan Server 10.0.0 设置集群
- javascript - 选择形式反应
- python - Adaptive modelling using GEKKO sysid
- r - 在 R 中查找掷骰的条件概率
- raku - 是否可以解析一个字符串,就好像它在 Raku 中被 << 和 >> 包围?
- machine-learning - 如何为机器人代码构建状态/动作的 Q 表?