voID* kmalloc(unsigned int size){ asm("mov %[size],%%esi" : /* no outputs */ : [size] "m" (size) : "esi"); asm("movl ,%eax"); asm("int@H_419_7@应该将地址放入EAX.我认为C中的返回值存储在EAX中,但显然不是,(哦,我正在使用GCC BTW).我需要一些如何返回EAX,寄存器int将无法工作,因为编译器设置.是否有用于返回指针的寄存器?或者它是否像被推入堆栈或什么?解决方法 这不是编写内联asm的有效方法.即使您将返回值放在正确的寄存器中,它也可能在函数实际返回时丢失/破坏,因为编译器可以添加任意的结尾代码.您必须使用输出约束和return语句来返回内联asm的结果: @H_419_7@ @H_419_7@ 总结voID* kmalloc(unsigned int size){ voID *p; asm("int x80" : "=a"(p) : "S"(size),"a"(9)); return p;}x80");}
以上是内存溢出为你收集整理的如何在C中返回void *指针?全部内容,希望文章能够帮你解决如何在C中返回void *指针?所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)