__asm内联命令,用于C ++和汇编

时间:2019-05-15 21:57:17

标签: c++ assembly arm raspberry-pi3

我们正在尝试使用内联汇编和__asm命令将c ++代码转换为汇编代码。发生的问题是我们可以在c ++中正确地编译代码,但是当代码尝试以汇编形式进行编译时,它会给我们带来非法的异常错误,在某些情况下还会出现“结尾处的垃圾错误为4”。我们认为这是因为它无法识别双引号,并且需要一个引号字符串。

我们尝试使用'\'分隔引号,但效果不尽如人意,我们尝试使用单引号,但同样无济于事,给了我们这些错误。

我们要转换此汇编代码:

    device: 
           .asciz "/dev/gpiomem"

示例1 ** 我们尝试了多种方法,包括将其分为两个独立的asm函数:

    __asm("device: ");
    __asm(".asciz "/dev/gpiomem"");

这会引发非法指令。

示例2 我们用两个单独的asm指令执行另一个示例:

    __asm(".asciz \"/dev/gpiomem\"");

这将引发4的垃圾错误。

最后一个示例:

    __asm("device: .asciz '/dev/gpiomem'");

这也会引发垃圾错误。

此代码位于int主函数中。如果需要,我很乐意提供更多代码。编译器是gcc。目前,我不知道该版本。它应该是一个相当新的版本。

0 个答案:

没有答案