所谓的“大端”、“小端”是由编译器决定的,跟MCU无关,这个有两个方面的证据。
1、MCU的器件手册
如果MCU确实分大端、小端,那么器件手册中一定会注明,因为这涉及到可能出错的问题,不得不查。但现实是没有,所以你也查不到。
2、基于汇编指令/机器码的分析
使用高级语言编程,遇到大于MCU指令位的数据时,完全可以不必理睬,跟小于等于指令位数的数据同样编程,编译后得到的机器指令自会在后面默默处理。但你直接使用汇编编程时,这种情况就必须人工处理。比如拿8位MCU在内存中写入一个16位数据时,无法用一条指令实现,你必须一步步指令机器怎么做,拆分16位数据为两个8位数据的存储你愿意用大端就大端,愿意用小端就小端,前后一致就不会出错。可见,大小端是软件决定的。
不过,8位以上的MCU在概念上有点绕。比如16位MCU在使用8位存储器存储16位数据时就一定会被MCU自动拆分成两部分,此时MCU要么是大端存储设计要么就是小端存储的设计,但这依然不构成是大端MCU还是小端MCU的问题,因为此时怎么存储是硬件决定的,完全是个黑箱,不会对处理结果造成任何影响,只有在处理16位以上的数据时才会出现大小端问题。那就假设某16位MCU的数据在8位存储器上以大端模式存储,那么该MCU就是大端MCU么?可针对此MCU使用汇编编程,同前面说的8位MCU的情况一样,面对32位数据时必须人工拆分成两个16位数据,再用分别用指令存储,这时在两个16位数据的层面上依然可以想大端就大端,想小端就小端,可见16位及以上位数的MCU依然不分什么大小端,所有大小端的问题其实都是软件编译器带来的,而大小端的定义也必须是针对数据位数高于指令位数的前提下才有意义。
由此,楼主若问RL78是什么端的MCU,只能说压根就没这个说法,器件手册上自然也不会写。楼主该问的是RL78用的某款编程软件是大端存储模式还是小端存储模式,这个恐怕也只能写段程序试试。如果有软件说明文档,也许会有说明。
|