【打杂总结】实现函数调用

前提

芯片模拟器中纯汇编,还不是常规汇编,编程难度太大,于是需要从软件层面上模拟循环、函数调用等。实现函数调用的时候,总觉得有哪些不对,于是详细思考了一下函数调用本身的作用。

函数调用

函数调用本身的作用:

  • 开辟一片局部数据空间;
  • 跳转到相应代码段;

具体的效果是这样的,多次调用某一个函数func()时,都会跳转到指令空间的某个位置,这样可以大大降低指令空间的总体大小。每次调用函数func()时,其实都会在栈上开辟一块独立空间。

函数调用 = 指令空间中相同的代码 + 栈段上的独立空间

我的设计:
我只考虑了独立空间的开辟,最近太着眼于这方面,忽略了与之前跳转的结合。
我现在打算这样实现模拟的函数调用:

  • 调用regSave()函数,将当前函数的寄存器数据写入内存;
  • 利用调用寄存器进行参数的接收;
  • 执行JUMPL指令跳转到功能执行部分;
  • 执行功能执行部分指令;
  • 执行JUMPR指令返回上一层函数;
  • 代用regRestore()函数,恢复现场;

由于是寄存器编程,和高级语言的函数调用略有不同。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值