查看: 2609|回复: 7

[CodeWarrior] 【求助】CW2.10编译有警告,如何消除?

[复制链接]

该用户从未签到

24

主题

666

帖子

0

金牌会员

Rank: 6Rank: 6

积分
1072
最后登录
2023-4-10
发表于 2014-12-9 15:24:02 | 显示全部楼层 |阅读模式
本帖最后由 霹雳小猪 于 2014-12-9 15:25 编辑

如图,在C语言中嵌套汇编,想给GPR1寄存器赋值,编译器警告!
我知道答案 目前已有7人回答
QQ截图20141209151725.jpg
回复

使用道具 举报

该用户从未签到

145

主题

4926

帖子

0

金牌会员

Rank: 6Rank: 6

积分
9267
最后登录
1970-1-1
发表于 2014-12-11 16:43:36 | 显示全部楼层
楼主用的是MPC5604P?
以后问问题,要把所使用的产品说明清楚,这样好帮你找对应的工程师。
回复 支持 反对

使用道具 举报

该用户从未签到

24

主题

666

帖子

0

金牌会员

Rank: 6Rank: 6

积分
1072
最后登录
2023-4-10
 楼主| 发表于 2014-12-11 17:11:09 | 显示全部楼层
FSL_TICS_ZJJ 发表于 2014-12-11 16:43
楼主用的是MPC5604P?
以后问问题,要把所使用的产品说明清楚,这样好帮你找对应的工程师。 ...

失误失误是MPC5604P的!
回复 支持 反对

使用道具 举报

该用户从未签到

0

主题

218

帖子

0

中级会员

Rank: 3Rank: 3

积分
472
最后登录
1970-1-1
发表于 2014-12-12 18:32:50 | 显示全部楼层
我再测试一下,周一回复您
回复 支持 反对

使用道具 举报

该用户从未签到

24

主题

666

帖子

0

金牌会员

Rank: 6Rank: 6

积分
1072
最后登录
2023-4-10
 楼主| 发表于 2014-12-12 21:59:10 | 显示全部楼层
FSL_TICS_Fiona 发表于 2014-12-12 18:32
我再测试一下,周一回复您

好的,谢谢
回复 支持 反对

使用道具 举报

该用户从未签到

24

主题

666

帖子

0

金牌会员

Rank: 6Rank: 6

积分
1072
最后登录
2023-4-10
 楼主| 发表于 2014-12-15 09:41:00 | 显示全部楼层
FSL_TICS_Fiona 发表于 2014-12-12 18:32
我再测试一下,周一回复您

原汇编是这么操作的:
        e_lis   r11,OSTCBHighRdy@ha                #Get pointer to ready task TCB
        e_lwz   r11,OSTCBHighRdy@l(r11)

        e_lis   r12,OSTCBCur@ha                          #Save as current task TCB ptr.
        e_stw   r11,OSTCBCur@l(r12)

        e_lwz   r1, 0(r11)                                       #Get new stack pointer
转换成C应该就是:
       OSTCBCur = OSTCBHighRdy;                                        
        asm
        {
                e_lis   r11,OSTCBCur@ha                // Get pointer to ready task TCB
                e_lwz   r11,OSTCBCur@l(r11)
                e_lwz   r1, 0(r11)              // Get new stack pointer
        }
如果只用汇编编译就没错,程序正常运行。
如果C嵌套汇编,编译有警告,程序运行不正常!
回复 支持 反对

使用道具 举报

该用户从未签到

0

主题

218

帖子

0

中级会员

Rank: 3Rank: 3

积分
472
最后登录
1970-1-1
发表于 2014-12-15 18:14:45 | 显示全部楼层
霹雳小猪 发表于 2014-12-15 09:41
原汇编是这么操作的:
        e_lis   r11,OSTCBHighRdy@ha                #Get pointer to ready task TCB
        e ...

这个警告是因为C编译器在生成汇编的时候,会使用r1寄存器。这个警告提醒用户,防止因为r1寄存器被修改,而影响到嵌入式汇编后面C代码的运行
回复 支持 反对

使用道具 举报

该用户从未签到

24

主题

666

帖子

0

金牌会员

Rank: 6Rank: 6

积分
1072
最后登录
2023-4-10
 楼主| 发表于 2014-12-15 20:03:40 | 显示全部楼层
FSL_TICS_Fiona 发表于 2014-12-15 18:14
这个警告是因为C编译器在生成汇编的时候,会使用r1寄存器。这个警告提醒用户,防止因为r1寄存器被修改, ...

那有什么好方法解决么?
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 注册/登录

本版积分规则

关闭

站长推荐上一条 /3 下一条

Archiver|手机版|小黑屋|恩智浦技术社区

GMT+8, 2025-7-20 13:25 , Processed in 0.105541 second(s), 29 queries , MemCache On.

Powered by Discuz! X3.4

Copyright © 2001-2024, Tencent Cloud.

快速回复 返回顶部 返回列表