相关疑难解决方法(0)

指令长度可变时的指令解码

以下是一些说明及其相应的编码:

55                      push   %ebp
89 e5                   mov    %esp,%ebp
83 ec 18                sub    $0x18,%esp
a1 0c 9f 04 08          mov    0x8049f0c,%eax
85 c0                   test   %eax,%eax
74 12                   je     80484b1 <frame_dummy+0x21>
b8 00 00 00 00          mov    $0x0,%eax
85 c0                   test   %eax,%eax
74 09                   je     80484b1 <frame_dummy+0x21>
c7 04 24 0c 9f 04 08    movl   $0x8049f0c,(%esp)
Run Code Online (Sandbox Code Playgroud)

今天的微处理器通常是32位或64位,我猜他们通常以4字节或8字节的块从内存中读取数据.但是,指令可以具有可变长度.微处理器如何解码这些指令,为什么它们的长度不一致以便于实现?

assembly microprocessors

11
推荐指数
2
解决办法
6471
查看次数

使用可变长度指令,计算机如何知道所提取指令的长度?

在并非所有指令长度相同的架构中,计算机如何知道一条指令读取多少?例如,在Intel IA-32中,一些指令是4个字节,有些是8个字节,所以它如何知道是读4个还是8个字节?机器开机时第一条指令红色是否具有已知大小,每条指令是否包含下一条指令的大小?

assembly cpu-architecture

8
推荐指数
3
解决办法
3397
查看次数