Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/assembly/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Go 如何在表中查找值?_Go_Assembly_Arm_Arm64 - Fatal编程技术网

Go 如何在表中查找值?

Go 如何在表中查找值?,go,assembly,arm,arm64,Go,Assembly,Arm,Arm64,在arm64上的Go assembly中,我创建了一个值表 DATA table<>+0(SB)/4, 0x00000001 DATA table<>+4(SB)/4, 0x00000002 DATA table<>+8(SB)/4, 0x00000003 DATA table<>+12(SB)/4, 0x00000004 数据表+0(SB)/42000000001 数据表+4(SB)/42000000002 数据表+8(SB)/42000000

在arm64上的Go assembly中,我创建了一个值表

DATA table<>+0(SB)/4, 0x00000001
DATA table<>+4(SB)/4, 0x00000002
DATA table<>+8(SB)/4, 0x00000003
DATA table<>+12(SB)/4, 0x00000004
数据表+0(SB)/42000000001
数据表+4(SB)/42000000002
数据表+8(SB)/42000000003
数据表+12(SB)/42000000004
但是我想做的是从这个表中加载一个值到一个寄存器中,但是基于一个变量

如果我有一个常数,我可以

MOVD table<>+4(SB), R1
MOVD表+4(SB),R1
所以R1=0x00000002

但是如何使用变量来实现呢?类似于

MOVD $4, R0
MOVD table<>+R0(SB), R1
MOVD$4,R0
MOVD表+R0(SB),R1
或者更好的是,我可以直接获取地址并加载向量吗

我想正常情况下的答案是ADR,但当我在围棋中尝试时

ADR table<>(SB), R0
ADR表(SB),R0
我只是

asm: illegal combination: 00280 [...] ADR table<>(SB), R9 ADDR NONE NONE REG, 3 7
asm:非法组合:00280[…]ADR表(SB),R9地址无无注册,3 7
这可能是我见过的最不有用的错误消息


好的,如果我使用PC相对寻址,ADR是有效的,但这显然是不对的。

事实证明这很简单,只需在变量前加一个$

MOVD $table<>+0(SB), R0
MOVD$table+0(SB),R0