88 memory hardware assembly terminology cpu-architecture
我做了一些研究.一个字节是8位,一个字是可以在内存中寻址的最小单元.单词的确切长度会有所不同.我不明白的是有一个字节是什么意思?为什么不说8位?
我问过这个问题的教授,他说这些天大多数机器都是字节可寻址的,但这会产生什么结果呢?
Dar*_*ust 152
字节:今天,一个字节几乎总是8位.然而,情况并非总是如此,并且没有"标准"或任何指示这一点的东西.由于8位是一个方便的数字,它成为事实上的标准.
字:处理器处理数据的自然大小(寄存器大小).今天遇到的最常见的字大小是8,16,32和64位,但是其他大小也是可能的.例如,有几台36位机器,甚至12位机器.
该字节是CPU的最小可寻址单元.如果要设置/清除单个位,首先需要从存储器中获取相应的字节,弄乱这些位,然后将字节写回存储器.
相反,这个词是处理器一次可以进行处理(如加法和减法)的最大块位.该定义有点模糊,因为某些处理器可能针对不同的任务具有不同的字大小(例如,整数与浮点处理).字大小是大多数操作的用法.
还有一些处理器具有不同的指针大小:例如,8086是16位处理器,这意味着它的寄存器是16位宽.但它的指针(地址)是20位宽,并通过以某种方式组合两个16位寄存器来计算.
Ste*_*n C 15
我不明白的是有一个字节是什么意思?为什么不说8位?
除了技术点,一个字节不一定是8位,有一个术语的原因是简单的人性:
努力的经济(又称懒惰) - 说"字节"而不是"八位" 更容易
部落主义 - 一群人喜欢使用行话/私人语言来区别于其他人.
只是顺其自然.您不会通过抱怨来改变50多年积累的IT术语和文化包袱.
FWIW - 当你的意思是"8位独立于硬件架构"时使用的正确术语是"八位字节".
字节
我试图从C++的角度回答这个问题.
C++标准将"byte"定义为"可寻址的数据单元,其大小足以容纳执行环境的基本字符集的任何成员".
这意味着该字节至少包含足够的相邻位以容纳实现的基本字符集.也就是说,可能值的数量必须等于或大于不同字符的数量.在美国,基本字符集通常是ASCII和EBCDIC集合,每个集合可以容纳8位.因此,保证一个字节至少有8位.
换句话说,一个字节是存储单个字符所需的内存量.
如果要验证C++实现中的"位数",请检查文件'limits.h'.它应该有一个如下所示的条目.
#define CHAR_BIT 8 /* number of bits in a char */
Run Code Online (Sandbox Code Playgroud)
字
Word被定义为可由机器/系统一起处理(即,在一次尝试中)的特定比特数.或者,我们可以说Word定义了在单个操作中可以在CPU和RAM之间传输的数据量.
计算机中的硬件寄存器是字大小的.字大小还定义了最大可能的内存地址(每个内存地址指向一个字节大小的内存).
注 - 在C++程序中,内存地址指向一个字节的内存而不是一个字.
似乎所有答案都假设高级语言,主要是 C/C++。
但是这个问题被标记为“汇编”,并且在我知道的所有汇编程序中(对于 8 位、16 位、32 位和 64 位 CPU),定义更加清晰:
byte = 8 bits
word = 2 bytes
dword = 4 bytes = 2Words (dword means "double word")
qword = 8 bytes = 2Dwords = 4Words ("quadruple word")
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
149634 次 |
| 最近记录: |