This discussion has been locked.
You can no longer post new replies to this discussion. If you have a question you can start a new discussion

ARMv7R的ARM指令和Thumb指令集问题

请问:

1、Cortex-R4F是ARMv7R架构,而手册中提到ARMv7支持EncodingT1,T2,T3,A1,A2,且ARMv7R支持ARM和Thumb-2指令集。

所以,Cortex-R4F支持的指令格式应该是EncodingT2对吗,那支持的ARM指令是A1还是A2呢?我没找到相应说明。

2、ARM指令格式A1和A2都无法将32-bit立即数通过MOV指令装入寄存器R2。我应该用什么指令或什么方法实现呢?

谢谢

Parents
  • Hi!

    >1、Cortex-R4F是ARMv7R架构,而手册中提到ARMv7支持EncodingT1,T2,T3,A1,A2,且ARMv7R支持ARM和Thumb-2指令集。

    >所以,Cortex-R4F支持的指令格式应该是EncodingT2对吗,那支持的ARM指令是A1还是A2呢?我没找到相应说明。

    根据ARM ARM 0406C.b,A8.1.3节:

    ==================================

    This is a list of one or more instruction encodings. Each instruction encoding is labelled as:

    • T1, T2, T3 … for the first, second, third and any additional Thumb encodings

    • A1, A2, A3 … for the first, second, third and any additional ARM encodings

    ==================================

    所以A或T后面的数字代表的是第几种编码形式。

    >2、ARM指令格式A1和A2都无法将32-bit立即数通过MOV指令装入寄存器R2。我应该用什么指令或什么方法实现呢?

    可以用以下伪指令实现:

        LDR  r2, =0x12345678

    编译器会自动生成一条PC relative LDR指令,从literal pool里取数。即:

        LDR  r2, [pc, xxx]   // 偏移量由编译器自动计算

        ...

        ...

        ...

        DCD  0x12345678  // Literal pool

    BR

    Xingguang

Reply
  • Hi!

    >1、Cortex-R4F是ARMv7R架构,而手册中提到ARMv7支持EncodingT1,T2,T3,A1,A2,且ARMv7R支持ARM和Thumb-2指令集。

    >所以,Cortex-R4F支持的指令格式应该是EncodingT2对吗,那支持的ARM指令是A1还是A2呢?我没找到相应说明。

    根据ARM ARM 0406C.b,A8.1.3节:

    ==================================

    This is a list of one or more instruction encodings. Each instruction encoding is labelled as:

    • T1, T2, T3 … for the first, second, third and any additional Thumb encodings

    • A1, A2, A3 … for the first, second, third and any additional ARM encodings

    ==================================

    所以A或T后面的数字代表的是第几种编码形式。

    >2、ARM指令格式A1和A2都无法将32-bit立即数通过MOV指令装入寄存器R2。我应该用什么指令或什么方法实现呢?

    可以用以下伪指令实现:

        LDR  r2, =0x12345678

    编译器会自动生成一条PC relative LDR指令,从literal pool里取数。即:

        LDR  r2, [pc, xxx]   // 偏移量由编译器自动计算

        ...

        ...

        ...

        DCD  0x12345678  // Literal pool

    BR

    Xingguang

Children