老师要我把thumb-2指令集加进设计去,emmm不太想加,主要是网上找不到什么资料,一点点慢慢来吧
分析了一下thumb-2数据指令指令
以EOR(imme)为例
此类数据处理指令,都是EOR{S}<c> <Rd>,<Rn>,#<const>形式
指令机器码格式如下:
问题就是imm8的8位立即数,8位立即数怎么转化为32位的
对于ARM指令很简单,THUMB-2稍微复杂一点点:
以EOR r1,r2,#360为例,其机器码是F48271B4
首先 通过i:imm3:imm8得到一个12位立即数imm12,这里是FB4
接着做扩展ThumbExpandImmWithC
ThumbExpandImmWithC定义如下:
// ThumbExpandImmWithC()
// ---------------------
(bits(32), bit) ThumbExpandImmWithC(bits(12) imm12)
if imm12<11:10> == '00' then
case imm12<9:8> of
when '00'
imm32 = ZeroExtend(imm12<7:0>, 32);
when '01'
if imm12<7:0> == '00000000'