我需要在GCC中编写一个基本asm 代码,该代码使用头文件中定义的立即数。我知道如何在扩展asm 中执行此操作,但是如何在没有任何输入和输出参数的基本asm中执行此操作?
答案 0 :(得分:2)
您可以使用stringize类型的 C 预处理程序宏将常量值转换为字符串。然后,您可以使用该字符串来构造基本的内联汇编语句。一个例子是:
#define STRINGIZE1(x) #x
#define STRINGIZE(x) STRINGIZE1(x)
#define STACK_ADDR 0x1000
int main()
{
asm ("movl $" STRINGIZE(STACK_ADDR) ", %esp");
return 0;
}
此示例应生成以下汇编指令:
movl $0x1000, %esp
注意:此代码并非示例。