内联汇编程序问题

时间:2011-01-19 10:56:40

标签: 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"                                                   
); 

在32位架构上,这会产生一个看起来像的指令字 这个:0x91050101

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

asm volatile (%x91, %x05, %x01, %x01);

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

非常感谢!

2 个答案:

答案 0 :(得分:6)

asm volatile (
" .byte 0x91, 0x5, 0x1, 0x1          \n"
);

应该这样做。

您可以在http://sourceware.org/binutils/docs/as/

找到文档

答案 1 :(得分:1)

Microsoft支持_emit伪指令

http://msdn.microsoft.com/en-us/library/1b80826t.aspx

我不确定g ++支持什么