gpt4 book ai didi

encoding - 为什么 ARMv7 中的一条指令有多种编码

转载 作者:行者123 更新时间:2023-12-05 01:09:16 26 4
gpt4 key购买 nike

我目前正在尝试为 ARM cortex A9 实现一个反汇编程序,它实现了 ARMv7 指令集。

为此,我正在使用可以在此处下载的手册“DDI0406C_b_arm_architecture_reference_manual.pdf”(在 arm 网站上注册后):

http://infocenter.arm.com/help/index.jsp?topic=/com.arm.doc.set.architecture/index.html

在本手册中,在 A8.8 部分的指令详细信息中,我不明白为什么一条指令有多种编码(如 A1、A2、...),似乎都是用 ARMv7 实现的。

此外,由于 ARM cortex A9 使用了 thumb-2,它是否也实现了 A1/A2/... 编码,还是仅实现了 T1/T2... ?

我真的阅读了本手册的所有部分都与编码相关,但我仍然不明白我们如何知道程序使用了哪种编码。

最佳答案

指令的不同编码在功能上做不同的事情。

使用不同编码的一个例子是 A8.9.12 ADR

This instruction adds an immediate value to the PC value to form a PC-relative address, and writes the result to the destination register.



如果指令编码为 A1如果被编码为 A2,则偏移量必须被解释为零或正数。那么偏移量是负的。

另一个例子是 A8.8.132 POP

If the list contains more than one register, the instruction is assembled to encoding A1. If the list contains exactly one register, the instruction is assembled to encoding A2.



我可以想象不同的 POP出于性能原因,可能会创建编码以创建不同的微代码。

对于您问题的第二部分,Cortex-A9 是 ARMv7-A 架构 CPU,它支持您所指的手册中指定的所有指令。也许你还应该阅读 Cortex™-A9 Technical Reference Manual .

关于encoding - 为什么 ARMv7 中的一条指令有多种编码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16107929/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com