如何解决如何在表中查找值?
在 arm64 上的 Go 汇编中,我创建了一个值表
DATA table<>+0(SB)/4,0x00000001
DATA table<>+4(SB)/4,0x00000002
DATA table<>+8(SB)/4,0x00000003
DATA table<>+12(SB)/4,0x00000004
但是我想要做的是从这个表中加载一个值到一个寄存器中,但是基于一个变量。
MOVD table<>+4(SB),R1
所以 R1=0x00000002
但是我怎么能用变量来做呢?像……
MOVD $4,R0
MOVD table<>+R0(SB),R1
或者更好的是,我可以获取地址并直接加载向量吗?
我猜正常情况下的答案是 ADR,但是当我在 go 中尝试时
ADR table<>(SB),R0
我刚好
asm: illegal combination: 00280 [...] ADR table<>(SB),R9 ADDR NONE NONE REG,3 7
这可能是我见过的最没用的错误消息。
好的,所以如果我使用 PC 相对寻址,ADR 可以工作,但这显然不对。
解决方法
事实证明这真的很简单,你只需在变量前加一个 $
MOVD $table<>+0(SB),R0
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。