完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
我在***ss部分声明内存变量时注意到一些奇怪的现象。如果我直接从同一源文件中的内存中加载寄存器,变量就会被声明(lw a0,BssVariable),它正确地将指令扩展为单个字节命令,并使用fp(帧指针)寄存器。加载该值。如果我在声明源文件(外部引用)之外编译相同的代码,它将使用32位地址扩展为多字节命令。是否有一个神奇的声明告诉编译器这个变量是外部的,并且存在于***ss部分中,因此它将使用单个字节EFP相关指令?
|
|
相关推荐
7个回答
|
|
是的,我找不到一种方法:MPLAB®XC32汇编程序,链接器和UTILITIESUser的Guideto解决这个问题。汇编器只允许您对外声明。不能指定外部变量所在的部分。我将用.COMM指令进行实验。我可以在SBSS部分中的所有我的模块中声明一个公共变量,并且可以将它们合并在一起。
|
|
|
|
看起来,在访问***ss变量的模块中为***ss变量添加一个公共指令告诉编译器可以使用框架指针访问它们。但是,这意味着我需要访问每个源文件,并为每个变量添加一个公共指令。还有一种方式告诉编译器外部变量在***ss部分中。我也不能把它们放在头文件中,它不喜欢.h文件中的汇编指令。include
|
|
|
|
我还没有和PIC32一起工作。因此,这只是一些有教养的猜测……如果.h文件是C,那么有可能使用C部分声明等在C中声明变量。幸运的是,您可以从asm访问这些变量。
|
|
|
|
调整代码的汇编程序。多么可怕啊!
|
|
|
|
另一种是相当神秘的链接器警告。IIRC您参与了-G0-和GT-G8线程。
|
|
|
|
帧指针寄存器($FP/$ 30)指向当前堆栈帧,您可能是指全局指针寄存器($GP/$ 28)。
|
|
|
|
您需要在代码中显式地写入指令。
|
|
|
|
只有小组成员才能发言,加入小组>>
5243 浏览 9 评论
2035 浏览 8 评论
1955 浏览 10 评论
请问是否能把一个ADC值转换成两个字节用来设置PWM占空比?
3208 浏览 3 评论
请问电源和晶体值之间有什么关系吗?PIC在正常条件下运行4MHz需要多少电压?
2258 浏览 5 评论
779浏览 1评论
672浏览 1评论
有偿咨询,关于MPLAB X IPE烧录PIC32MX所遇到的问题
598浏览 1评论
PIC Kit3出现目标设备ID(00000000)与预期的设备ID(02c20000)不匹配。是什么原因
680浏览 0评论
578浏览 0评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-24 17:33 , Processed in 1.670087 second(s), Total 87, Slave 72 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号