我不太喜欢组装,但是对于一个项目,我必须将C51 C编译器的几行汇编代码修改为SDCC。
这是C51的代码
setb T1Run
setb T0Run
setb IDLE
jnb T0Full, $,使用SDCC编译生成
?ASlink-Warning-Undefined Global 'IDLE' referenced by module 'Com_Func'
?ASlink-Warning-Undefined Global '$' referenced by module 'Com_Func'
?ASlink-Warning-Undefined Global 'T0Run' referenced by module 'Com_Func'
?ASlink-Warning-Undefined Global 'T1Run' referenced by module 'Com_Func'
?ASlink-Warning-Byte PCR relocation error for symbol $
file module area offset
Refby ./Com_Func.rel Com_Func CSEG 004A
Defin ./Com_Func.rel Com_Func CABS 0000作为编译器错误/警告。
$-symbol被汇编程序替换为指令的实际地址,但是什么是SDCC等效的呢?T0Run等的警告?发布于 2013-07-24 14:30:55
我认为您可以将$替换为在同一行上定义的标签。
00001$:
jnb T0Full, 00001$注意,根据SDCC编译器用户指南
在内联汇编程序代码中定义的所有标签都必须采用nnnnn$的形式,其中nnnnn是小于100的数字(这意味着每个函数最大的100个内联汇编程序标签的限制)。
至于其他编译器警告,这些符号在任何地方都没有定义。它们是如何在原始C51代码中定义的?
发布于 2016-02-20 04:56:51
哈哈。听起来像是sdcc,很有趣。我刚刚开始添加头文件。我不得不把它放在bin Dir中,因为它没有像keil在它的项目文件夹中那样找到它。
这可能会有帮助。现在我还不是专家,但是他们说的有些事情不像他们说的那样有效。我不得不同时使用SDCC手册和迁移手册,最终我找到了我想要的正确的语法.
SDCC.pdf?folderId=db3a30431375fb1a01138c57204603bd&fileId=db3a304314dca389011517efc5860d61&ack=t
https://stackoverflow.com/questions/17828323
复制相似问题