- 杂志
 搜 索: 
 论坛 » MCU应用 » [已OK]关于混合编程----汇编语言中使用C的参数
广告招商
版主: renesasstk , QQMCU , renesaschina , l0p0c
 发表新贴 
 发表回复 
 [已OK]关于混合编程----汇编语言中使用C的参数  发表于 2008-07-15 16:59:51 [您是本帖的第193位阅读者]     [1楼] 
呢称:forstudy
加我为好友
waitms(u8 loc)
{
  #pragma asm
      mov.b  _loc, R0L
..........
  #pragma endasm
}

这段代码中编译时提示 _loc是个undefined symbol.
是否说 loc存储在某个寄存器中,需要使用该寄存器?
但是如果修改成
waitms(u8 loc)
{
u8 test;
test = loc;
  #pragma asm
      mov.b  _test, R0L
..........
  #pragma endasm
}
仍然报相同的错误。那么要使用C中的变量该怎么个用法?

 
 RE: [求助]关于混合编程----汇编语言中使用C的参数  发表于 2008-07-15 22:23:26 [2楼] 
呢称:forstudy
加我为好友

自己来回答吧。
传递过来的参数用寄存器来实现。
我用的是R8C 2C系列的,在Hew集成开发环境中参数的寄存器为FB
但是使用的时候是 -1[FB]
也就是说:
mov.b -1[FB],R0L

至于为什么使用成-1[FB],不是很明白。我当时是看汇编代码得来的。
知道的人可以帮忙解释一下。


 
 RE: [求助]关于混合编程----汇编语言中使用C的参数  发表于 2008-07-16 09:34:37 [3楼] 
呢称:huchunm
加我为好友
对于上面提到的问题,我也进行了测试,正如上面所写的,在汇编窗口里可以看到汇编代码使用的是FB寄存器。我认为C语言用到的临时变量,编译器都是临时分配的,所以对于另外一个程序来说,可能临时变量就不分配到这个位置了。如果每次用汇编代码来确定位置的话,不是很麻烦吗,所以我建议还是在汇编中定义一个全局的变量,在C语言中直接调用起来比较方便。
 
 RE: [求助]关于混合编程----汇编语言中使用C的参数  发表于 2008-07-16 16:06:04 [4楼] 
呢称:forstudy
加我为好友

因为我写的两个函数都只有一个参数,所以参数都以FB寄存器来传递。
而对于LS说的在汇编中使用全局变量,是不是说将参数给汇编的变量??
在C中使用汇编中的变量还没用过,可以试一试。谢谢LS的。


 
 RE: [求助]关于混合编程----汇编语言中使用C的参数  发表于 2008-07-16 17:17:44 [5楼] 
呢称:forstudy
加我为好友
现在的做法是 在C程序中定义一个全局变量,然后在汇编中glb后再使用。
不知道和 huchunm 所要表达的意思一样不?

 
 RE: [已OK]关于混合编程----汇编语言中使用C的参数  发表于 2008-07-17 15:48:28 [6楼] 
呢称:ammiezhang
加我为好友

我认为你们俩个说的意思是一样的,子函数中的局部变量是无法在汇编中被识别的。


 
共6条 1/1 1   
   快速回复主题
  用户名 : 匿名不能发帖!请先 [ 登陆 ]
  标 题:
  内 容 :
 
关于我们 | 广告服务 | 企业会员服务 | 新手上路 | 联系我们 | 友情链接
《电子产品世界》杂志社 版权所有 北京东晓国际技术信息咨询有限公司
Copyright ©2002 ELECTRONIC ENGINEERING & PRODUCT WORLD. All rights reserved.
京ICP备060382号