- 论坛徽章:
- 0
|
原帖由 gauchy 于 2006-1-13 15:21 发表
小弟一直对机器字长有点困惑,都知道有8位机,16位机和32位机器,在定义数据类型时,分配的空间不同,比如int型在16位机上是2个字节,而在32位机上就是4个字节,我想知道到底是根据什么来分配的呢?int型可能有点 ...
想深入了解. 学好汇编语言对你帮助非常大.
汇编语言中的,最基本的数据类型有: (1) byte (2)word (3)double word
当然,还有qdword类型(8个字节)等。
这些数据类型由机器架构决定。
也就是说:1字节,2字节,4字节,8字节。每移一位就是2的倍数。
C语言的低级的高级语言,实现上是模拟汇编语言。
char 必须对应 byte , 所以它的类型固定是1个字节。否则就没有相应的类型访问1个字节的数据。
short 也必须对应于 word, 所以它的类型是2个字节。否则没有相应的类型访部2个字节的数据。
至于int 类型:
(1)x86架构的机器,基本都是32位。但是初始于实模式下,它是16位的。
(2)16位下,它只能访问16位的地址空间。
(3)所以,16位下,无论是int, long, long long(如果有的话) 都只能访问16位数据。即word
(4)在32位保护模式下,可以一次访问32位地址空间。那么,int 对应于double word,long 和
long long都只能一次访问32位数据。long long 模拟访问64位数据。实际上是只能访问32位数据。
(5)当x86-64架构,被初始化于long mode中的64位模式下,long 相对应于64位数据。但也要看操作系统和编译器的支持度。
[ 本帖最后由 mik 于 2006-1-17 21:04 编辑 ] |
|