首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >C51 C编译器内联程序集到SDCC内联程序集

C51 C编译器内联程序集到SDCC内联程序集
EN

Stack Overflow用户
提问于 2013-07-24 08:01:42
回答 2查看 1.4K关注 0票数 0

我不太喜欢组装,但是对于一个项目,我必须将C51 C编译器的几行汇编代码修改为SDCC。

这是C51的代码

代码语言:javascript
复制
setb    T1Run
setb    T0Run

setb    IDLE
jnb     T0Full, $

,使用SDCC编译生成

代码语言:javascript
复制
?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等的警告?
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-07-24 14:30:55

我认为您可以将$替换为在同一行上定义的标签。

代码语言:javascript
复制
00001$: 
  jnb     T0Full, 00001$

注意,根据SDCC编译器用户指南

在内联汇编程序代码中定义的所有标签都必须采用nnnnn$的形式,其中nnnnn是小于100的数字(这意味着每个函数最大的100个内联汇编程序标签的限制)。

至于其他编译器警告,这些符号在任何地方都没有定义。它们是如何在原始C51代码中定义的?

票数 1
EN

Stack Overflow用户

发布于 2016-02-20 04:56:51

哈哈。听起来像是sdcc,很有趣。我刚刚开始添加头文件。我不得不把它放在bin Dir中,因为它没有像keil在它的项目文件夹中那样找到它。

这可能会有帮助。现在我还不是专家,但是他们说的有些事情不像他们说的那样有效。我不得不同时使用SDCC手册和迁移手册,最终我找到了我想要的正确的语法.

SDCC.pdf?folderId=db3a30431375fb1a01138c57204603bd&fileId=db3a304314dca389011517efc5860d61&ack=t

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17828323

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档