内联汇编程序问题

Hei*_*inz 2 c assembly

使用内联汇编程序我可以使用两个输入和一个结果指定一个添加操作,如下所示:

int a = 5;
int b = 5;
int res;

asm volatile (
" add %1, %2, %0          \n\t"
: "=r" (res)            
: "r" (a), "r" (b)       
: "%g0"                                                   
); 
Run Code Online (Sandbox Code Playgroud)

在32位架构上,这会产生一个如下所示的指令字:0x91050101

现在我想知道,而不是明确指定添加的汇编代码,我想立即指定指令字并将其放入可执行文件中.这看起来应该是这样的

asm volatile (%x91, %x05, %x01, %x01);
Run Code Online (Sandbox Code Playgroud)

任何人都有一个想法,我可以在哪里找到更多信息如何做到这一点以及语法如何做到这一点(上面只是一个疯狂的猜测).

非常感谢!

Gun*_*iez 6

asm volatile (
" .byte 0x91, 0x5, 0x1, 0x1          \n"
);
Run Code Online (Sandbox Code Playgroud)

应该这样做.

您可以在http://sourceware.org/binutils/docs/as/找到该文档.