在Golang中使用不受支持的操作码(DMB)(适用于32位ARM)

时间:2017-03-20 19:01:07

标签: assembly go arm opcodes

我试图在Go程序中发出DMB指令,并且我正在使用.s文件中定义的asm函数。我在ARMv7设备上使用Go 1.7.3进行编译。

DMB不是Go中支持的指令,但我看到documentation here有关如何使用不支持的操作码的信息。

使用一些ARM gcc binutils,我发现DMB的操作码是f57ff05f。我的issue_dmb.s文件位于下方。

TEXT ·issue_dmb(SB),$0

    // DMB: opcode f57ff05f
    BYTE $0xF5; BYTE $0x7F; BYTE $0xF0; BYTE $0x5F

    RET

当我建立时,我收到一个错误:无法识别的指令" BYTE"

(可能相关:当我在.s文件的第一行中使用它时,我得到了与NOSPLIT相同的错误,正如我在许多示例中看​​到的那样,所以我删除了它。)

我是否遗漏了让汇编程序识别这些关键字的内容?

0 个答案:

没有答案