Error[8]: Undefined offset: 2, File: /www/wwwroot/outofmemory.cn/tmp/plugin_ss_superseo_model_superseo.php, Line: 121
File: /www/wwwroot/outofmemory.cn/tmp/plugin_ss_superseo_model_superseo.php, Line: 473, decode(

概述基本上我需要知道从C函数返回时寄存器void *指针的位置.我有这个代码: void* kmalloc(unsigned int size){ asm("mov %[size], %%esi" : /* no outputs */ : [size] "m" (size) : "esi"); asm("movl $9, %eax"); asm("in 基本上我需要知道从C函数返回时寄存器voID *指针的位置.我有这个代码: @H_419_7@

@H_419_7@

voID* kmalloc(unsigned int size){    asm("mov %[size],%%esi"    : /* no outputs */    : [size] "m" (size)    : "esi");    asm("movl ,%eax");    asm("int 
voID* kmalloc(unsigned int size){    voID *p;    asm("int [+++]x80" : "=a"(p) : "S"(size),"a"(9));    return p;}
x80");}
@H_419_7@应该将地址放入EAX.我认为C中的返回值存储在EAX中,但显然不是,(哦,我正在使用GCC BTW).我需要一些如何返回EAX,寄存器int将无法工作,因为编译器设置.是否有用于返回指针的寄存器?或者它是否像被推入堆栈或什么?

解决方法 这不是编写内联asm的有效方法.即使您将返回值放在正确的寄存器中,它也可能在函数实际返回时丢失/破坏,因为编译器可以添加任意的结尾代码.您必须使用输出约束和return语句来返回内联asm的结果: @H_419_7@

@H_419_7@

[+++] 总结

以上是内存溢出为你收集整理的如何在C中返回void *指针?全部内容,希望文章能够帮你解决如何在C中返回void *指针?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

)
File: /www/wwwroot/outofmemory.cn/tmp/route_read.php, Line: 126, InsideLink()
File: /www/wwwroot/outofmemory.cn/tmp/index.inc.php, Line: 165, include(/www/wwwroot/outofmemory.cn/tmp/route_read.php)
File: /www/wwwroot/outofmemory.cn/index.php, Line: 30, include(/www/wwwroot/outofmemory.cn/tmp/index.inc.php)
Error[8]: Undefined offset: 3, File: /www/wwwroot/outofmemory.cn/tmp/plugin_ss_superseo_model_superseo.php, Line: 121
File: /www/wwwroot/outofmemory.cn/tmp/plugin_ss_superseo_model_superseo.php, Line: 473, decode(

概述基本上我需要知道从C函数返回时寄存器void *指针的位置.我有这个代码: void* kmalloc(unsigned int size){ asm("mov %[size], %%esi" : /* no outputs */ : [size] "m" (size) : "esi"); asm("movl $9, %eax"); asm("in 基本上我需要知道从C函数返回时寄存器voID *指针的位置.我有这个代码: @H_419_7@

@H_419_7@

voID* kmalloc(unsigned int size){    asm("mov %[size],%%esi"    : /* no outputs */    : [size] "m" (size)    : "esi");    asm("movl ,%eax");    asm("int 
voID* kmalloc(unsigned int size){    voID *p;    asm("int x80" : "=a"(p) : "S"(size),"a"(9));    return p;}
x80");}
@H_419_7@应该将地址放入EAX.我认为C中的返回值存储在EAX中,但显然不是,(哦,我正在使用GCC BTW).我需要一些如何返回EAX,寄存器int将无法工作,因为编译器设置.是否有用于返回指针的寄存器?或者它是否像被推入堆栈或什么?

解决方法 这不是编写内联asm的有效方法.即使您将返回值放在正确的寄存器中,它也可能在函数实际返回时丢失/破坏,因为编译器可以添加任意的结尾代码.您必须使用输出约束和return语句来返回内联asm的结果: @H_419_7@

@H_419_7@

[+++] 总结

以上是内存溢出为你收集整理的如何在C中返回void *指针?全部内容,希望文章能够帮你解决如何在C中返回void *指针?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

)
File: /www/wwwroot/outofmemory.cn/tmp/route_read.php, Line: 126, InsideLink()
File: /www/wwwroot/outofmemory.cn/tmp/index.inc.php, Line: 165, include(/www/wwwroot/outofmemory.cn/tmp/route_read.php)
File: /www/wwwroot/outofmemory.cn/index.php, Line: 30, include(/www/wwwroot/outofmemory.cn/tmp/index.inc.php)
如何在C中返回void *指针?_C_内存溢出

如何在C中返回void *指针?

如何在C中返回void *指针?,第1张

概述基本上我需要知道从C函数返回时寄存器void *指针的位置.我有这个代码: void* kmalloc(unsigned int size){ asm("mov %[size], %%esi" : /* no outputs */ : [size] "m" (size) : "esi"); asm("movl $9, %eax"); asm("in 基本上我需要知道从C函数返回时寄存器voID *指针的位置.我有这个代码: @H_419_7@

@H_419_7@

voID* kmalloc(unsigned int size){    asm("mov %[size],%%esi"    : /* no outputs */    : [size] "m" (size)    : "esi");    asm("movl ,%eax");    asm("int 
voID* kmalloc(unsigned int size){    voID *p;    asm("int x80" : "=a"(p) : "S"(size),"a"(9));    return p;}
x80");}
@H_419_7@应该将地址放入EAX.我认为C中的返回值存储在EAX中,但显然不是,(哦,我正在使用GCC BTW).我需要一些如何返回EAX,寄存器int将无法工作,因为编译器设置.是否有用于返回指针的寄存器?或者它是否像被推入堆栈或什么?

解决方法 这不是编写内联asm的有效方法.即使您将返回值放在正确的寄存器中,它也可能在函数实际返回时丢失/破坏,因为编译器可以添加任意的结尾代码.您必须使用输出约束和return语句来返回内联asm的结果: @H_419_7@

@H_419_7@

总结

以上是内存溢出为你收集整理的如何在C中返回void *指针?全部内容,希望文章能够帮你解决如何在C中返回void *指针?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1219840.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-05
下一篇 2022-06-05

发表评论

登录后才能评论

评论列表(0条)

保存