函数调用中的参数传递
发表:2023-08-29 11:59:45 阅读:54

函数调用中的参数传递:如果只是单纯使用C语言进行编程,没必要知道函数间参数是如何传递的;但如果用汇编编写的函数能够与C语言编写的函数具有相同的格式,那么C程序与汇编程序之间就可以互相调用函数,此时了解函数调用中的参数传递规律是有意义的。由于HCS08系列单片机中的H寄存器能很方便与X寄存器一起保存与装载,因此针对HCS08单片机而言,H寄器也参与参数的传递,参数传递的一般过程如下。

(1)函数调用者(如主程序)将前面部分参数先压人堆栈,压栈的顺序是将参数列表从左到右进行传递,最后的参数一般通过H、x、A等寄存器进行传递,因此将最后的参数装入这些特殊寄存器,然后通过调用执行子函数;

(2)子函数从堆栈和特殊寄存器中取出参数,进行相关的运算,并将需要返回的数值或数值指针存入用于函数返回的特殊寄存器中;

(3)函数调用者从特殊寄存器中取出返回值。

参数传递与返回规律的总结见表l2—8。

编译器在编译C程序时,虽然参数都是通过堆栈与寄存器传递的,但不同的编译器使用的寄存器和参数人栈的顺序会有所不同,即C语言翻译成汇编语言程序的接口方式不同。搞清楚使用的编译器针对汇编程序与C程序之间是如何传递参数的方法之一,就是编写子函数和调用程序,研究编译器生成的汇编代码,然后逐渐修改参数的数量和类型,以及返回值的类型,对比编译器生成的汇编代码,从中找出规律。

 

阅读更多请您关注:

采用宏定义的方法实现高级语言内嵌汇编编程

使用编译器生成汇编包含文件

位域的定义

freescale代理