相关疑难解决方法(0)

单词和字节之间有什么区别?

我做了一些研究.一个字节是8位,一个字是可以在内存中寻址的最小单元.单词的确切长度会有所不同.我不明白的是有一个字节是什么意思?为什么不说8位?

我问过这个问题的教授,他说这些天大多数机器都是字节可寻址的,但这会产生什么结果呢?

memory hardware assembly terminology cpu-architecture

88
推荐指数
7
解决办法
15万
查看次数

WORD分别在32/64位操作系统中包含多少位?

有人有明确的答案吗?

有人说在32位操作系统上,WORD意味着16位,是吗?

cpu-word

35
推荐指数
1
解决办法
6万
查看次数

在 Intel x86-64 架构上,机器代码指令是否以小端 4 字节字获取?

尽管单词的常见定义(维基百科所述)是:

用于指定存储器中的位置的最大可能地址大小通常是硬件字(这里,“硬件字”是指处理器的全尺寸自然字,而不是使用的任何其他定义)。

根据一些消息来源,x86 系统注意到它被视为 16 位:

在 x86 PC(Intel、AMD 等)中,虽然架构很早就支持 32 位和 64 位寄存器,但其本机字大小可以追溯到 16 位起源,“单个”字为 16 位。“双”字是 32 位。请参阅 32 位计算机和 64 位计算机。

然而英特尔的官方文档(sdm 第 2 卷,第 1.3.1 节)指出:

这意味着字的字节从最低有效字节开始编号。图 1-1 说明了这些约定。

图 1-1 显示了 x86-64 上下文中单词的小端序列中的 4 个字节,而不是 2 个字节或 8 个字节(如上面链接的来源的不同定义所建议的那样):

在此输入图像描述

我对这一切真正感到困惑的是如何获取和解析指令。我正在编写一个模拟器,一旦我解析 PE 格式的可执行文件并进入文本部分,如果我要遵循 4 字节小端格式,这是否意味着将首先解析第 4 个字节?

让我们组成一些字节,例如:

.text segment buffer:
< 0x10, 0x1A, 0x1B, 0x1C, 0x1D, 0x1E, 0x1F, 0x20 > ....
Run Code Online (Sandbox Code Playgroud)

我会将第一条指令解析为 1C、1B、1A、10、20、1F、1E、1D ...(等等,由于长度可变,显然可能有更多的单词需要读取,具体取决于这里的实际字节是什么)

x86-64 intel cpu-word machine-code endianness

7
推荐指数
1
解决办法
1187
查看次数

QWORD之后会发生什么?

如果

  • 8位是一个字节

  • 两个字节是一个单词

  • 四个字节是双字节

  • 8个字节是一个qword

什么是16字节的好名字?

x86 assembly terminology intel

6
推荐指数
1
解决办法
1549
查看次数

“64 位操作系统”、“基于 x64 的处理器”与字长有什么关系?

我想知道,64 位操作系统和基于 x64 的处理器是否意味着字大小(即处理器和物理内存之间的内存传输大小)是 64 位?如果操作系统是 32 位且处理器为 x64 呢?那么基于 x86 的处理器呢?这两个规范(XX 位操作系统和基于 xXX 的处理器)与硬件中的实际字长有什么关系?

64-bit operating-system 32-bit x86-64 cpu-architecture

1
推荐指数
1
解决办法
945
查看次数