0101 PL 正数或0 N清0 0110 VS 溢出 V置位 0111 VC 未溢出 V清0 1000 HI 1110 AL 总是 任何状态 1111 NV 不要使用 无 1111此空间不要使用,已在V5T体系 中使用
0101 PL 正数或0 N清0 0110 VS 溢出 V置位 0111 VC 未溢出 V清0 1000 HI …… ….. 1110 AL 总是 任何状态 1111 NV 不要使用 无 1111此空间不要使用,已在V5T体系 中使用
Thumb的指令集编码 ·Thumb使用16位的指令编码 15131210 87 0 ·指令编码的不同,导致指令的不同。如: LDR/STR指令 LDRr8,[rO];ARM正确 LDRr8,[rO];Thumb错误 STRr5,[r7,#8];ARM正确 STRr8,[r7,#8];Thumb错误 LDRH r3,[r2,#-2];Thumb错误,不支持
• Thumb使用16位的指令编码 15 13 12 10 8 7 0 • 指令编码的不同,导致指令的不同。如: LDR/STR指令 LDR r8,[r0] ;ARM正确 LDR r8, [r0] ;Thumb错误 STR r5, [r7, #8] ;ARM正确 STR r8, [r7, #8] ;Thumb错误 LDRH r3, [r2,#-2] ;Thumb错误,不支持 Thumb的指令集编码
·对Thumb而言,几乎所有的指令 其句法中的寄存器都被限制必须 是低寄存器(r0~r7) ·只有ADD、MOV指令可以用高寄存器 (r8~r15)(有限制 ADD R12R4: 正确 ADD R10,R11; 正确 MOV R3,#8; 正确 MOVR8,#8;错误,不能送立即数到高寄存器 MOV R12,R3 正确
• 对Thumb而言,几乎所有的指令 其句法中的寄存器都被限制必须 是低寄存器(r0~r7) • 只有ADD、MOV指令可以用高寄存器 (r8~r15)(有限制) ADD R12,R4 ; 正确 ADD R10,R11; 正确 MOV R3,#8 ; 正确 MOV R8,#8 ;错误,不能送立即数到高寄存器 MOV R12, R3 ; 正确
Thumb一ARM相似处 ·Load一Store:结构,有数据处理、数据传 送及流控制指令。 支持8位字节、16位半字和32位字数据类 型,半字以2字节边界对准,字以4字节 边界对准。 ·32位无分段存储器
Thumb-ARM相似处 • Load-Store结构,有数据处理、数据传 送及流控制指令。 • 支持8位字节、16位半字和32位字数据类 型,半字以2字节边界对准,字以4字节 边界对准。 • 32位无分段存储器
Thumb一ARM的差异处 Thumb为了实现16位指令长度,丢弃了 ARM指令集的一些特性。 ·大多数指令是无条件执行的(所有ARM指 令都是条件执行的) 许多Thumb数据处理指令采用2地址格式 (日的寄存器与一个源寄存器相同){除64 位乘法指令外,ARM数据处理指令采用3 地址格式) 由于采用高密度编码,Thumb指令格式没 有ARM指令格式规则
Thumb-ARM的差异处 Thumb为了实现16位指令长度,丢弃了 ARM指令集的一些特性。 • 大多数指令是无条件执行的(所有ARM指 令都是条件执行的) • 许多Thumb数据处理指令采用2地址格式 (目的寄存器与一个源寄存器相同){除64 位乘法指令外,ARM数据处理指令采用3 地址格式) • 由于采用高密度编码,Thumb指令格式没 有ARM指令格式规则