各位大神,刚接触MSP430,遇到一个疑问:
MSP430上电后,开始从"C000"读取Rom信息,下面为"C000-C003"的Rom 存储的值:
C000-C003:31 40 00 04
IAR的disassembly里面这步的转码为:4031 0400
机器码为:MOV.W #0X400SP
symbol为:?csstart_begin
个人有以下疑问:
1.Iar 的disassembly 转码为什么会从“31 40 00 04” ==>"40 31 04 00"? (要把后面的Bit值提到前面,前面转移到位后面)
2.“40 31 .04 00”是根据什么逻辑转换到机器码“MOV.W #0X400SP”?
3.同时Symbol 的信息又是从哪里转换的?
请各位大神不吝赐教,感谢!!!!(本人基本上是小白)
1. MSP430的指令是16位的,所以会从起始地址取出一个16位指令,并且MSP430是小端模式的,也就是一个 十六位数的低字节在低地址,高字节在高地址,所以31 40 转换为一个十六位数的话,就是0x4031.
2. 要查看指令对应的机器码(或者由机器码推断指令),请参考相应型号的user's guide的CPU或者CPUX章节。
感谢,你的回答,对第一个和第二个问题,基本上知道了.
針對第三個問題;
該怎麼去理解?
你启动DEBUG时,IAR把执行代码下载到目标板,同时把符号表载入内存,你就可以对照源码了。
事实上你可以改debug的设置让IAR只装入符号表而不下载程序,这样没必要就不用总擦除Flash了