MATLAB模拟动力系统:函数调用约定详解
需积分: 49 43 浏览量
更新于2024-08-09
收藏 3.92MB PDF 举报
"MPLAB XC16 C 编译器用户指南 - 函数调用约定在MATLAB模拟动力系统吸引子中的应用"
在MATLAB环境中模拟动力系统吸引子时,了解函数调用约定是非常重要的,这关系到程序的正确执行和效率。在MPLAB XC16 C编译器中,函数调用约定规定了如何处理函数调用过程中的寄存器和参数传递。
函数调用约定的核心原则是:
1. 寄存器W0-W7由调用方保存,如果需要在函数返回后继续使用,调用方必须在调用前备份这些寄存器的值,通常使用堆栈来保存。
2. 寄存器W8-W14由被调用函数负责保存。如果被调用函数修改了这些寄存器,它必须在函数结束前保存并恢复它们的原始状态。
3. W0-W4寄存器用于返回函数值,而W0-W7用于传递参数。
4. 当使用-mconst-in-code(auto_psv)存储模型时,DBRPAG/PSVPAG寄存器也需保存。
5. 参数按照从左到右的顺序分配到可用的对齐寄存器中,结构参数可以根据需要占用多个寄存器,没有特定的对齐限制。
函数参数的处理方式是:
- 前8个工作寄存器W0-W7用于参数传递,分配顺序是从左到右。
- 不同数据类型的参数需要不同数量的寄存器:
- char、int、short占用1个寄存器。
- pointer占用1个(eds指针需2个)。
- long占用2个(对齐到偶数寄存器)。
- float和double*占用2个(对齐到偶数寄存器)。
- long double占用4个(对齐到4的倍数寄存器)。
- structure中每2个字节占用1个寄存器。
- _Fract占用1个。
- long _Fract占用2个(对齐到偶数寄存器)。
- _Accum占用3个(对齐到4的倍数寄存器)。
- 如果使用-fno-short-double,double将等同于long double。
这个调用约定允许编译器高效地使用寄存器,优化参数传递和函数返回值的处理,这对于MATLAB模拟动力系统吸引子这样的计算密集型任务至关重要。
在使用MPLAB XC16 C编译器时,需要注意的是,虽然中文版文档提供了方便,但英文原版文档始终是最权威的参考来源。Microchip Technology Inc.对其产品性能和使用情况的英文描述提供了详细信息,并强调了在涉及生命维持和/或生命安全应用时,用户需自行承担风险。此外,Microchip的代码保护功能是为了保护知识产权,但不能保证代码绝对安全,用户应对可能存在的破解风险有所了解。
1305 浏览量
748 浏览量
2022-09-20 上传
点击了解资源详情
点击了解资源详情
132 浏览量
267 浏览量
142 浏览量
2023-08-21 上传
集成电路科普者
- 粉丝: 44
- 资源: 3860
最新资源
- 图书管理备案系统.rar
- the_computer_vision_app:一款可在网络上执行常见的计算机视觉任务的应用程序
- java笔试题算法-C5:用于C#/.NET的C5泛型集合库
- comment2votes:seq2seq架构,用于预测reddit评论的投票
- andyseoDB
- 家居城促销顾客须知(转盘上摇奖的注意事项)
- 永宏PLC编成软件 适合FBE FBS B1Z等型号.rar
- file-system-access:公开用户设备上的文件系统,以便Web应用程序可以与用户的本机应用程序进行互操作
- jstl-tld.zip
- Ikasumi-crx插件
- 超可爱卡通动物图标下载
- 任务一-使用监督的机器学习预测:根据编号预测学生的百分比。 学习时间
- CSE212_DataStructures_Guide
- 初级java笔试题-awesome-php-resources:精选的很棒的php列表
- ךופה לע ךופה - הפוך על הפוך-crx插件
- 作业六