gpt4 book ai didi

assembly - 指令大小是什么意思?

转载 作者:行者123 更新时间:2023-12-03 20:27:28 25 4
gpt4 key购买 nike

我真的很困惑,可能听起来很愚蠢,但是我真的不确定当我们说一条指令大小是32位或16位指令是什么意思。

如果opreand的大小是32位,那么我们说这是32位指令,而操作数的大小是16位指令。

或每条指令都有操作码,如果操作码地址是32位,那么我们说指令是32位。

我还将研究ARM架构,在该架构中,我读取的所有Thumb指令均为16位,而ARM模式指令为32位。

指令大小完全取决于所使用的体系结构还是取决于CPU的工作模式?

编辑:

http://www.xgc-tek.com/manuals/m1750-ada/m1750/x524.html

给定的链接建议16位指令由8位操作码和2个通用寄存器的4 + 4位组成。

ARM拇指指令集如何设置?

最佳答案

ARM(不包括新发布的64位)具有两个指令集,这些指令集由固定大小的指令组成。经典的一种称为ARM,每条指令均为32位。后来的一种称为Thumb(实际上是Thumb2),它可以具有32位或16位指令。有一些ARM内核仅支持ARM,ARM + Thumb和Thumb指令集。如果内核同时支持两种模式,则它具有更改 Activity 指令集选择的指令,并且指令流可以在不同的指令集之间跳转(互通)。

ARM指令可以包含固定的操作数,但是它们永远不能与指令大小一样大。有些指令还支持对操作数的操作,例如移位,旋转,这给您的印象是可以用一条指令加载32位值。

范例#1

a = 0x1;

拇指
2001        movs    r0, #1

ARM
e3a00001    mov r0, #1

范例#2
a = 0xC0000000;

拇指
f04f 4040   mov.w   r0, #0xC0000000

ARM
e3a00103    mov r0, #0xC0000000

例子#3
a = 0x12345678

拇指
f245 6078   movw    r0, #0x5678
f2c1 2034 movt r0, #0x1234

ARM
e3050678    movw    r0, #0x5678
e3410234 movt r0, #0x1234

关于assembly - 指令大小是什么意思?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19656586/

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