Microchip
登录
直播中
卢原继
8年用户
232经验值
私信
关注
[问答]
怎么将C中的switch/case语句转换为ASM?
开启该帖子的消息推送
ASM
大家好,我已经对这个任务做了一些研究,我认为这个任务很简单,但它不是(至少对我来说不是)!我试着用C语言转换上一个程序的开关/case语句(参见下面):我发现了Microchip的一个提示——在文本中,他们讨论的是使用宏,该宏在构建时运行,而不是在图像的操作期间……这使我相信,我打算用来从TMR0中获取变量的W寄存器的内容可能变成静态的,因为它将在构建时而不是连续地轮询……谁能帮我找到在ASM中正确实现这一点的方法吗?我不想写一个嵌套的if,否则语句,害怕运行时的性能和缺乏清晰性。谢谢!
回帖
(19)
丁亚念
2019-10-8 07:02:22
我不确定你说的“变成静态”是什么意思,但是你几乎肯定错了。你的例子中的代码调整了比较值,以允许之前对W所做的所有操作,所以W在变化,但是比较允许。对单个值进行一系列比较。你不必使用宏来做,他们只是指出你可以,如果你想整理它看起来有点。
我不确定你说的“变成静态”是什么意思,但是你几乎肯定错了。你的例子中的代码调整了比较值,以允许之前对W所做的所有操作,所以W在变化,但是比较允许。对单个值进行一系列比较。你不必使用宏来做,他们只是指出你可以,如果你想整理它看起来有点。
举报
黄芙蓉
2019-10-8 07:11:56
我关心的是这条线:XOLLW Case2 ^ Case1,根据网站,宏将运行在构建时间。这是否意味着XOLLW也将被评估?这就是我认为工作寄存器只会与工作寄存器相接的原因。再次感谢您的快速回复。
我关心的是这条线:XOLLW Case2 ^ Case1,根据网站,宏将运行在构建时间。这是否意味着XOLLW也将被评估?这就是我认为工作寄存器只会与工作寄存器相接的原因。再次感谢您的快速回复。
举报
丁亚念
2019-10-8 07:26:47
这不是宏,只是一个普通指令。XORLW是在运行时完成的,但参数“CASE2^CASE1”是在汇编时计算的。它必须是,xorlw指令唯一有效的参数是文字8位值。
这不是宏,只是一个普通指令。XORLW是在运行时完成的,但参数“CASE2^CASE1”是在汇编时计算的。它必须是,xorlw指令唯一有效的参数是文字8位值。
举报
黄芙蓉
2019-10-8 07:40:40
我会去看看它是否有效,谢谢!
我会去看看它是否有效,谢谢!
举报
更多回帖
rotate(-90deg);
回复
相关问答
ASM
C
语言
switch
case
怎么执行
2019-03-22
7198
关于
C
语言
SWITCH
语句
的问题
2013-07-30
3480
switch
语句
编译器问题求解
2023-02-23
550
生成32位
asm
的编译器,如何将它
转换为
64位
asm
输出?
2023-06-09
546
想把编译器
转换
成
C
99标准但在
c
99
中
宏
asm
不同
2019-02-22
2811
如何在新版本中将
C
项目
转换为
C
++呢?
2023-01-06
480
请教下各位大神,用
switch
case
检测按键该怎么加延时程序
2020-03-06
4104
求教如何
将
Labview的程序
转换为
C
语言啊
2013-12-24
3433
请教大神LSM6DSM是如何
将
寄存器数据
转换为
C
度的?
2022-12-12
430
如何解决vhdl代码
中
的
case
语句
问题?
2019-06-26
4804
发帖
登录/注册
20万+
工程师都在用,
免费
PCB检查工具
无需安装、支持浏览器和手机在线查看、实时共享
查看
点击登录
登录更多精彩功能!
首页
论坛版块
小组
免费开发板试用
ebook
直播
搜索
登录
×
20
完善资料,
赚取积分