Gcc 在汇编中显示寄存器的值

Gcc 在汇编中显示寄存器的值,gcc,assembly,printf,Gcc,Assembly,Printf,我有一个汇编代码,它执行一个数学方程,结果存储在ebx寄存器中。如何显示寄存器的值?我正在考虑将ebx的值推送到堆栈中,然后“%I\n”,并调用printf,但如果这样做可行,我不知道如何使用MacOS在GCC程序集中对其进行编码。\35; include #include <stdio.h> int f() { asm("movl $42, %ebx"); asm("movl %ebx, %eax"); } main() { pr

我有一个汇编代码,它执行一个数学方程,结果存储在
ebx
寄存器中。如何显示寄存器的值?我正在考虑将
ebx
的值推送到堆栈中,然后
“%I\n”
,并调用printf,但如果这样做可行,我不知道如何使用MacOS在GCC程序集中对其进行编码。

\35; include
#include <stdio.h>

int f()
{
        asm("movl $42, %ebx");
        asm("movl %ebx, %eax");
}

main() {
        printf("%i\n", f()); // displays 42.
}
int f() { asm(“movl$42,ebx”); asm(“移动百分比ebx,%eax”); } main(){ printf(“%i\n”,f());//显示42。 }

如您所见,EAX寄存器的内容将用作f()函数的返回值。

您必须告诉我们什么是arch:x86?x86_64?PPC?这将影响用于调用printf的程序集和调用约定。根据
uname
我正在使用i386架构。