c调用python C语言中的goto语句。为什么老师反复强调不能用?
浏览量:1366
时间:2021-03-17 08:26:59
作者:admin
C语言中的goto语句。为什么老师反复强调不能用?
说到goto的颜色变化,主要原因是goto太自由了,甚至比汇编语言跳跃更自由。跳转还需要考虑长地址、短地址等跳转。Goto完全没有限制。它可以直接从函数内部传递到函数外部,甚至传递到其他函数。这涉及到一个问题。我们都知道函数调用是为了保护当前的上下文,以及当前的执行堆栈和寄存器。一旦它进入被调用函数的内部,堆栈和寄存器都将改变。如果在函数内部使用goto去其他地方而函数不返回,程序就会乱七八糟,导致内存泄漏。因此,必须限制goto的使用。1函数内部的goto只能转到函数,以确保函数可以返回到被调用的。2中断中的goto也是一样的。Goto必须能够保证中断正常返回,否则也会导致中断异常。总之,不建议使用goto,因为它可以跳转到您想要执行的位置,而不受任何限制。它太自由了,但这是好事还是坏事,取决于程序开发人员的设计是否考虑周全,是否会导致这样那样的问题。
汇编怎样调用C?
汇编调用C,根据函数调用规范传递参数(即栈压),常用函数调用规范有stdcall,cdecl,cdecl是常用的默认调用规范。如果是cdecl,则堆栈清理操作由调用方处理,也就是说,程序集需要在C函数返回后清除堆栈。
另外,汇编调用C,还要处理ABI的返回值,常用的arm ABI oabi、EABI等,相关的返回值在哪个寄存器中。
C调用程序集。除了按照上述函数调用规范和ABI规范处理参数和返回值外,assembly还应该使用MOV、PC、LR返回C,即当C调用发生时,LR有调用的返回地址
版权声明:本文内容由互联网用户自发贡献,本站不承担相关法律责任.如有侵权/违法内容,本站将立刻删除。
上一篇
早期的蠕虫病毒 风湿病早期的症状
下一篇
饥荒小偷代码 饥荒小偷背包属性