在汇编中使用定义
我正在尝试使用 imagecraft 编译器 avr 在汇编中进行一些预处理。到目前为止,我最好的猜测是这样的:
#define TEST 1
#if TEST == 1
ldi R20, 0xFF
#else
ldi R20, 0xF1
#endif
但是这样做会导致编译器错误:
absolute expression expected
如何解决这个问题或者是否有更好的方法来做到这一点?
肯尼思
I'm trying to do some preprocessing in assembly using the imagecraft compiler avr. So far my best guess looks like this:
#define TEST 1
#if TEST == 1
ldi R20, 0xFF
#else
ldi R20, 0xF1
#endif
However doing this gives the compiler error:
absolute expression expected
How do I resolve this or is there a better way to do this?
kenneth
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
创建这样的答案:
经过一番挖掘,我找到了正确的解决方案。显然 iccavr 保留了 .define 指令来声明寄存器的别名,因此上面如果实际解析为
生成错误消息。解决方案是使用以下语法声明一个符号常量而不是定义:
然后它按预期工作。
Create an answer like this:
After some digging I've found the correct solution. Appearently iccavr reserves the .define derective to declare alias' to registers, so above if actually resolved to
which generated the error message. The solution is to declare a symbolic constant instead of a define using the syntax:
Then it works as intended.