下面几个伪指令都什么概念:
.VER 什么是map文件?这个指令有什么意义?
.LIST 什么是列表文件?
.PAGE
.FORM
.OPTJ 这个优化指令,什么意思,优化什么?
另外再啰嗦两句:
瑞萨官方的软件手册对汇编指令的说明很不清楚,对很多指令只看手册根本无法理解
手册里也没有伪指令的介绍
HEW的手册又没有单独对伪指令的介绍,而是夹杂在一堆非常专业的知识里。
所以建议最好能把汇编指令、伪指令单独写出来,再详细点。
共10条
1/1 1 跳转至页
2楼
另外再问下:
R8C的指令分0格式,短格式,快速格式,一般格式
如果我不指定指令格式
HEW编译器是否自动指定最优的格式??
谢谢!!!
R8C的指令分0格式,短格式,快速格式,一般格式
如果我不指定指令格式
HEW编译器是否自动指定最优的格式??
谢谢!!!
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单片机原理和应用》书里有介绍。
4楼
如您所说,
如果不指定指令格式,N30(瑞萨的编译器,嵌在Hew中)会自动优化最优的格式。无特殊要求的话,可以不指明所用指令格式。
如果不指定指令格式,N30(瑞萨的编译器,嵌在Hew中)会自动优化最优的格式。无特殊要求的话,可以不指明所用指令格式。
5楼
非常感谢您的回答!
《瑞萨R8C/11单片机原理和应用》我是有的,对于.OPTJ,上面提到过
和您说的一样,我还是不理解
是否是这样:
当使用.OPTJ后,原本的JMP.W会被优化为JMP.B,因为目标地址距离跳转指令很近,没必要用.W,用.B就好了
.OPTJ OFF 就是关闭优化
.OPTJ ON 就是开启优化
另外,使用.OPTJ ON 后是不是意味着开启所有优化
而没必要再使用.OPTJ ON,JMPW之类的指令了
《瑞萨R8C/11单片机原理和应用》我是有的,对于.OPTJ,上面提到过
和您说的一样,我还是不理解
是否是这样:
当使用.OPTJ后,原本的JMP.W会被优化为JMP.B,因为目标地址距离跳转指令很近,没必要用.W,用.B就好了
.OPTJ OFF 就是关闭优化
.OPTJ ON 就是开启优化
另外,使用.OPTJ ON 后是不是意味着开启所有优化
而没必要再使用.OPTJ ON,JMPW之类的指令了
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
.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
7楼
呵呵,R8C的芯片用了有段时间了
提的这些问题都是基本用不到、又不太好弄明白的,显得有些深
许多问题还是要向你们请教的
提的这些问题都是基本用不到、又不太好弄明白的,显得有些深
许多问题还是要向你们请教的
8楼
既然R8C/Tiny是16bit的,用C吧。用汇编是不是主要是对时序有要求?
我最近学习瑞萨的R8C,还是蛮适合C的,编译代码效率也还可以,毕竟是CISC指令集的。
不知楼主是否是电机控制的应用,有心水多交流哈
共10条
1/1 1 跳转至页
回复
有奖活动 | |
---|---|
【有奖活动】分享技术经验,兑换京东卡 | |
话不多说,快进群! | |
请大声喊出:我要开发板! | |
【有奖活动】EEPW网站征稿正在进行时,欢迎踊跃投稿啦 | |
奖!发布技术笔记,技术评测贴换取您心仪的礼品 | |
打赏了!打赏了!打赏了! |