以下是一些说明及其相应的编码:
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字节的块从内存中读取数据.但是,指令可以具有可变长度.微处理器如何解码这些指令,为什么它们的长度不一致以便于实现?
在并非所有指令长度相同的架构中,计算机如何知道一条指令读取多少?例如,在Intel IA-32中,一些指令是4个字节,有些是8个字节,所以它如何知道是读4个还是8个字节?机器开机时第一条指令红色是否具有已知大小,每条指令是否包含下一条指令的大小?