指令集位数指的啥,和cpu位数有什么关系,求大神回复
答案:1 悬赏:50 手机版
解决时间 2021-12-30 11:22
- 提问者网友:我是女神我骄傲
- 2021-12-30 03:06
指令集位数指的啥,和cpu位数有什么关系,求大神回复
最佳答案
- 五星知识达人网友:一袍清酒付
- 2021-12-30 04:02
当然, CPU的位数是指CPU能一次同时寄存和处理二
进制数码的位数,这和CPU中寄存器的位数对
应。
CPU为了实现其功能一般设计了指令集,即是
CPU的全部指令,这就是机器语言。计算机的所
有功能都是基于CPU的指令集。指令集和CPU的
位数是有联系 的。如Intel 8086 CPU 是16位,其
指令集也是16位。如Intel 80386DX CPU 是32
位,其指令集也是32位,但它也保持原16位指令
集,这是为了向上兼容。
操作系统的位数是说其所依赖的指令集的位
数。
计算机系统一般都应有向上兼容性,所以也可
有64位CPU上运行32位操作系统、32位CPU上运
行16位操作系统的情况。
操作系统位数应该是根据指针类型的位数来定
的。整数类型不一定跟位数相等,CPU位数准确
地说应该是CPU一次能够并行处理的数据宽度,
一般就是指数据总线宽度。
附:
64位CPU如:AMD Athlon64 、Intel Pentium 4 F
32位CPU如:Intel 80386DX 到 Intel Pentium III
和部分Intel Pentium 4
16位CPU如:Intel 8086、Intel 80286
64位操作系统如:Windows XP Professional
x64和Windows Server 2003 x64
32位操作系统如:Windows95、Windows98、
Windows NT、Windows 2000、Windows XP
16位操作系统如:DOS
Windows1.0到3.2是运行在DOS上的,不能算是
独立的操作系统。
呵呵,是这样的。如果你去看intel网站上的关于
ia32结构的白皮书,会搞得比一般人明白许多。
16位和32位早期的主要区别是寄存器的位数,内
存的寻址和相应指令集的扩充。32位intel cpu
都有real模式,即完全的16位模式,屏蔽掉32位
的所有特性;32位模式,可以使用所有的32位特
性;模拟的8086模式,可以用一个32位机模拟多
个16位的8086机,他们的内存是分段隔离的。现
在的操作系统使用的都是32位的模式,因为可以
享受到cpu直接提供的内存的分页和分段管理。
他们提供模拟机制,实际上也是依托cpu实现的
16位环境,而不是直接解释16位代码。由于负责
生成汇编代码的主要是编译器,所以设计16位的
编译器在任何情况下只能生成16位代码。当然,
这并不是说用16位的编译器不可能生成32位的代
码,因为他完全可能被设计成在16位实模式下生
成32位的代码,从而可以在32位的机器上被执
行。这就是所谓的交叉编译。你可以使用诸如
gcc这样的交叉编译器在16位dos环境下编译出可
以在32位linux环境下被执行的程序。
进制数码的位数,这和CPU中寄存器的位数对
应。
CPU为了实现其功能一般设计了指令集,即是
CPU的全部指令,这就是机器语言。计算机的所
有功能都是基于CPU的指令集。指令集和CPU的
位数是有联系 的。如Intel 8086 CPU 是16位,其
指令集也是16位。如Intel 80386DX CPU 是32
位,其指令集也是32位,但它也保持原16位指令
集,这是为了向上兼容。
操作系统的位数是说其所依赖的指令集的位
数。
计算机系统一般都应有向上兼容性,所以也可
有64位CPU上运行32位操作系统、32位CPU上运
行16位操作系统的情况。
操作系统位数应该是根据指针类型的位数来定
的。整数类型不一定跟位数相等,CPU位数准确
地说应该是CPU一次能够并行处理的数据宽度,
一般就是指数据总线宽度。
附:
64位CPU如:AMD Athlon64 、Intel Pentium 4 F
32位CPU如:Intel 80386DX 到 Intel Pentium III
和部分Intel Pentium 4
16位CPU如:Intel 8086、Intel 80286
64位操作系统如:Windows XP Professional
x64和Windows Server 2003 x64
32位操作系统如:Windows95、Windows98、
Windows NT、Windows 2000、Windows XP
16位操作系统如:DOS
Windows1.0到3.2是运行在DOS上的,不能算是
独立的操作系统。
呵呵,是这样的。如果你去看intel网站上的关于
ia32结构的白皮书,会搞得比一般人明白许多。
16位和32位早期的主要区别是寄存器的位数,内
存的寻址和相应指令集的扩充。32位intel cpu
都有real模式,即完全的16位模式,屏蔽掉32位
的所有特性;32位模式,可以使用所有的32位特
性;模拟的8086模式,可以用一个32位机模拟多
个16位的8086机,他们的内存是分段隔离的。现
在的操作系统使用的都是32位的模式,因为可以
享受到cpu直接提供的内存的分页和分段管理。
他们提供模拟机制,实际上也是依托cpu实现的
16位环境,而不是直接解释16位代码。由于负责
生成汇编代码的主要是编译器,所以设计16位的
编译器在任何情况下只能生成16位代码。当然,
这并不是说用16位的编译器不可能生成32位的代
码,因为他完全可能被设计成在16位实模式下生
成32位的代码,从而可以在32位的机器上被执
行。这就是所谓的交叉编译。你可以使用诸如
gcc这样的交叉编译器在16位dos环境下编译出可
以在32位linux环境下被执行的程序。
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯