基本上,我需要知道从 C 函数返回的寄存器 void* 指针放在什么位置。我有这个代码:
void* kmalloc(unsigned int size)
{
asm("mov %[size], %%esi"
: /* no outputs */
: [size] "m" (size)
: "esi");
asm("movl $9, %eax");
asm("int $0x80");
}
这应该将地址放入 EAX。我认为 C 中的返回值存储在 EAX 中,但显然不是,(哦,我正在使用 GCC BTW)。我需要一些如何返回 EAX,由于编译器设置,寄存器 int 也不起作用。是否有用于返回指针的寄存器?还是像推到堆栈上一样?