嵌入式技术基础与实践(第5版)
上QQ阅读APP看书,第一时间看更新

2.3 指令集与机器码对应表

CM4F处理器部分指令集与机器码对应关系如表2-21所示。“机器码”列中,v代表immed_value;n代表Rn;m代表Rm;s代表Rs;r代表register_list;c代表condition;d代表Rd;l代表label。机器码均为大端对齐方式,即高位字节在低地址中,便于从左到右顺序阅读。

表2-21 指令集与机器码对应表

续表

续表

以上是部分指令对应的机器码,如果读者需要自己确定某个指令的机器码,则可以按照以下方式进行操作。

(1)首先,需要在集成环境中对工程进行设置,让它能够生成.lst文件,本书集成环境为CCS。对于汇编工程,右击工程,选择Properties选项,在弹出的窗口左下侧,单击Show advanced settings,选择C/C++Build→Settings→Tool Settings→GNU Compiler→Miscellaneous选项,在右下角的Other flags的部分添加一个新的指令“-Wa,-adhlns="$@.lst"”用来生成.lst文件,重新编译即可。对于C/C++工程,右击工程,选择Properties选项,在弹出的窗口中,选择Build→MSP432 Compiler→Advanced Options→Assembler Options选项,选中Generate listing file(--asm_listing,-al)复选框,重新编译即可。

(2)将指令按照正确的格式给变量赋值,写入main函数中编译,编译结束后查看main.o.lst文件,找到指令对应的十六进制机器码进行记录,注意这里可能存在大端小端的问题,本芯片是大端格式,所以记录时注意改成小端格式并换算成二进制。每个变量注意取不同的值,多次进行编译记录,然后找出规律,确定每个变量变化所改变的机器码的部分。至此就可以完全确定这个指令所对应的机器码。