免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 4675 | 回复: 7

关于机器字长的问题!请明白的进来看看 [复制链接]

招聘 : 黑盒测试
论坛徽章:
0
发表于 2006-01-13 15:21 |显示全部楼层
小弟一直对机器字长有点困惑,都知道有8位机,16位机和32位机器,在定义数据类型时,分配的空间不同,比如int型在16位机上是2个字节,而在32位机上就是4个字节,我想知道到底是根据什么来分配的呢?int型可能有点巧合正好与机器字长对应,那么char型,在不同编译器上可以定义不同的空间,有的32位机器上也可以用字节寻址,然后分配1个字节给char型,有的就需要分配4字节?(有点疑问)。
小弟想知道的是如何根据机器字长知道一个类型具体运行时分配的了多大的空间呢?因为有时可能出现溢出的情况,希望高手能给予解释。

论坛徽章:
1
荣誉版主
日期:2011-11-23 16:44:17
发表于 2006-01-14 14:58 |显示全部楼层
根据ALU。

招聘 : 黑盒测试
论坛徽章:
0
发表于 2006-01-16 08:53 |显示全部楼层

回复 2楼 mq110 的帖子

谢谢回复,能说的详细点么?

论坛徽章:
0
发表于 2006-01-16 10:52 |显示全部楼层
我也想知道。。。

论坛徽章:
0
发表于 2006-01-17 20:08 |显示全部楼层
ALU是算术逻辑单元吧,和这个有什么关系呢?

论坛徽章:
0
发表于 2006-01-17 21:02 |显示全部楼层
原帖由 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 编辑 ]

论坛徽章:
0
发表于 2006-01-17 21:21 |显示全部楼层
那浮点型对机器字长有什么规定呢?或者说对应关系吧。

论坛徽章:
0
发表于 2006-12-29 23:35 |显示全部楼层
原帖由 mik 于 2006-1-17 21:02 发表




想深入了解. 学好汇编语言对你帮助非常大.

汇编语言中的,最基本的数据类型有: (1) byte   (2)word  (3)double word
当然,还有qdword类型(8个字节)等。

这些数据类型由机器架构决定。
也就是说 ...


解释的很不清楚...
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP