c - 内联汇编问题

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

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

非常感谢!

最佳答案

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

应该这样做。

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

关于c - 内联汇编问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4734414/

相关文章:

c - 数组C编程中打印出奇怪的字母

assembly - assembly 延迟 8086

windows - 我如何从 Windows 64x 运行调试命令

c - 如何使用 sscanf() 解析这行文本?

c++ - 为什么字符数组与指针和数组的处理方式不同?

c - 如何修复 "Infinite Loop error on jumping to C code from bootloader"

c - 未决请求队列存储在哪里?

c - MIPS 到 C 的翻译

c - 如何将参数传递给函数,从 Assembly 到 C

c - 在 C 中实现互斥锁