这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 » 论坛首页 » 嵌入式开发 » MCU » 请教几个伪指令的问题

共10条 1/1 1 跳转至

请教几个伪指令的问题

助工
2008-04-17 12:40:20     打赏
下面几个伪指令都什么概念:
.VER        什么是map文件?这个指令有什么意义?
.LIST       什么是列表文件?
.PAGE
.FORM
.OPTJ     这个优化指令,什么意思,优化什么?


另外再啰嗦两句:
瑞萨官方的软件手册对汇编指令的说明很不清楚,对很多指令只看手册根本无法理解
手册里也没有伪指令的介绍
HEW的手册又没有单独对伪指令的介绍,而是夹杂在一堆非常专业的知识里。

所以建议最好能把汇编指令、伪指令单独写出来,再详细点。



关键词: 请教     几个     指令     问题    

助工
2008-04-17 14:10:03     打赏
2楼
另外再问下:
R8C的指令分0格式,短格式,快速格式,一般格式
如果我不指定指令格式
HEW编译器是否自动指定最优的格式??
谢谢!!!

助工
2008-04-17 14:59:51     打赏
3楼

Kejian2000,感谢您关注使用瑞萨的单片机产品。我先回答您几个问题,不全面的地方请大家补充讨论。
map文件:
一般在用于描述MCU可访问存储区,程序段的定位及大小,所用标号、标志位的地址等等,要比存储器映像要更详细的信息文件,在编译时可指定是否自动生成。 

列表文件:
是中间文件,编译,汇编和连接时都会利用这些文件,也可供编程人员查看时用。
采用.LIST伪指令,可以控制在编译,汇编和连接时哪些信息是要输出到中间文件,哪些不要。一般用 .LIST OFF 与 .LIST ON控制。

.OPTJ:
可以控制跳转指令和子程序调用优化。

感谢您提出中肯的建议,这部分伪指令的说明不在Hew手册中介绍,我手头只有M16C族的英文版:
http://documentation.renesas.com/eng/products/mpumcu/apn/rej05b0085_m16cap.pdf

R8C的相关内容在《瑞萨R8C/11单片机原理和应用》与《瑞萨R8C/1A、1B单片机原理和应用》书里有介绍。


助工
2008-04-17 15:04:10     打赏
4楼
如您所说,
如果不指定指令格式,N30(瑞萨的编译器,嵌在Hew中)会自动优化最优的格式。无特殊要求的话,可以不指明所用指令格式。

助工
2008-04-17 16:06:00     打赏
5楼
非常感谢您的回答!


《瑞萨R8C/11单片机原理和应用》我是有的,对于.OPTJ,上面提到过
和您说的一样,我还是不理解
是否是这样:
当使用.OPTJ后,原本的JMP.W会被优化为JMP.B,因为目标地址距离跳转指令很近,没必要用.W,用.B就好了
.OPTJ   OFF  就是关闭优化
.OPTJ   ON   就是开启优化
另外,使用.OPTJ   ON 后是不是意味着开启所有优化
而没必要再使用.OPTJ  ON,JMPW之类的指令了




助工
2008-04-17 17:47:22     打赏
6楼
.OPTJ 伪指令可控制无条件分支指令的优化选项。具体定义如下:
.OPTJ  [OFF|ON],  [JMPW|JMPA],  [JSRW|JSRA]

1、OFF: Branch instructions are not optimized.
      ON:   Branch instructions are optimized. (Default)
2、JMPW: Unconditional branch instructions not subject to optimization processing
are generated with "JMP.W".
      JMPA: Unconditional branch instructions not subject to optimization processing
are generated with "JMP.A". (Default)
3、JSRW: Subroutine call instructions not subject to optimization processing are generated with "JSR.W".
      JSRA: Subroutine call instructions not subject to optimization processing are
generated with "JSR.W". (Default)

例如:
OPTJ OFF
.OPTJ ON
.OPTJ ON,JMPW
.OPTJ ON,JMPW,JSRW
.OPTJ ON,JMPW,JSRA
.OPTJ ON,JMPA
.OPTJ ON,JMPA,JSRW
.OPTJ ON,JMPA,JSRA
.OPTJ ON,JSRW
.OPTJ ON,JSRA

.OPTJ 伪指令的功能是与C编译器中的“-OGJ”选项相对应的,即对无条件跳转指令选择最适合的跳转方式,当然也包括跳转距离(S, B, W, A)。所以我认为您的理解是正确的,即如果对于一些短距离的跳转,如果汇编语言中使用了不恰当的跳转距离定义,则被优化(正如您所举例的那样)。

但.OPTJ ON,JMPW应当是指JMP.W的指令不被优化,即除JMP.W以外的无条件跳转才进行优化。

您真的看的很仔细了,研究的也挺深入的。
有些问题我们也必须很好的思考才能回答您,我们一起讨论吧。

但我们现在一般都采用C语言编程了,对于跳转指令的优化,是C编译器自动完成的,想.OPTJ这种汇编的伪指令很少自己去设定了。

关于汇编的伪指令,您可以参考我们的汇编器手册,具体下载链接为:
http://documentation.renesas.com/eng/products/tool/rej10j1791_as30_u.pdf

助工
2008-04-17 18:56:56     打赏
7楼
呵呵,R8C的芯片用了有段时间了
提的这些问题都是基本用不到、又不太好弄明白的,显得有些深
许多问题还是要向你们请教的

菜鸟
2008-04-19 01:43:04     打赏
8楼

既然R8C/Tiny是16bit的,用C吧。用汇编是不是主要是对时序有要求?
我最近学习瑞萨的R8C,还是蛮适合C的,编译代码效率也还可以,毕竟是CISC指令集的。
不知楼主是否是电机控制的应用,有心水多交流哈


菜鸟
2009-11-17 08:36:59     打赏
9楼
专业

菜鸟
2009-11-22 10:34:54     打赏
10楼
没用过你们所说的这些芯片。还是初学者,走的是8051路。。

共10条 1/1 1 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册 ]