×
单片机 > 单片机程序设计 > 详情

ARM Cortex-M 分支指令编码

发布时间:2021-01-21 发布时间:
|

B.  -- Branch causes a branch to a target address

if ConditionPassed(cond) then
{

  EncodingSpecificOperations(PC, lable);

  BranchWritePC(PC + imm32);

}

// All versions of the Thumb instruction set

T1 : B : not allowed in IT block

T2 : B : outside or last in IT block

// All versions of the Thumb instruction set from Thumb-2 onwards.

T3 : B.W : not allowed in IT block

T4 : B.W : outside or last in IT block

Specifies the label of the instruction that is to be branched to.

The assembler calculates the required value of the offset 
from the PC value of the B instruction to this label, 
then selects an encoding that will set imm32 to that offset.

Allowed offsets are even numbers in the range

T1 : -256 to 254 : imm8

T2 : -2048 to 2046 : imm11

T3 : -1048576 to 1048574 : imm6 +  imm11 

T4 : -16777216 to 16777214 : imm10 +  imm11 

BX  -- Branch and Exchange causes a branch to an address and instruction set specified by a register.

T1 : BX  // Outside or last in IT block

BLX (register) -- Branch and Exchange calls a subroutine at an address and instruction set specified by a register.

T1 : BLX  // Outside or last in IT block

BL, BLX (immediate) -- Branch with Link (immediate) calls a subroutine at a PC-relative address.

T1 : BL

T2 : BLX

 

关键字:ARM  Cortex-M  指令编码

『本文转载自网络,版权归原作者所有,如有侵权请联系删除』

热门文章 更多
如何为单片机选择合适的负载电容