汇编语言中的CPU的16位,32位和当今操作系统所指的32位,64位概念有点模湖,请大侠们赐教.
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了汇编语言中的CPU的16位,32位和当今操作系统所指的32位,64位概念有点模湖,请大侠们赐教.相关的知识,希望对你有一定的参考价值。
最近在自学汇编语言,这门语言围绕8086的CPU(8位或16位寄存器)在编程。问题来了:
1.汇编语言中所指CPU寄存器的8位,16位,32位跟目前32位操作系统和64位操作系统中的32位就是同一东西(CPU寄存器长度),还是另有其它涵义?
2.延伸第1个问题,比如AH,AX,EAX分别是8位,16位,32位的寄存器名,那么64位操作系统所指的64位又是用啥寄存器名?本人用的是win7 64位的操作系统。想用用debug命令了解一下CPU寄存器使用情况,结果这命令在win7下居然没有了。
3.cpu从之前的8086/186/286/386...现在到底到几86了?CPU寄存器发展到32位EAX的后,有没有再弄个EEAX(此名称只是假设) 64位的出来?
操作系统上的64位操作系统指的是混合调用指令,调用了64位的指令集。并不表示每一条指令都是64位的。在CPU中有不同的指令集,有些是在64位下操作的指令集,而调用这些指令集的系统就是原生64位。相反调用32位指令集的则是32位系统。所以它们不同于CPU的位宽,但是却有联系。64位指令集是那么调用CPU64位寄存大的指令的集合,根据CPU周围译码电路的不同,还有分IA-64等不同的指令集合。你可以认为64位系统中有部分指令调用了64位寄存器。
事实上在64位环境下,调用32位指令与32位上的调用并不相同!
也有有关理解为64系统指的是采用了64位寻址方式。事实上32位系统与64位系统的确有不同的寻址方式,但是64位操作系统与全新的寻址方式,是因为64位采用不同的方式,而不是不同的寻址方式而造就是64位,再者说寻址能力不全是因为寄存器,而是因为CPU总线宽度,比如在32位机中,CPU的总线宽度为20位,而64位机各框架下CPU的总线宽度并不相同。
32位EAX扩展后使用的是RAX为标记寄器的。在window7 32位下是存在debug命令的,而这个命令却在64bits下取消了!这就是主什么有些人会说win7下有,而另一些人说没有的原因!既然是没有,那么就必须使用外挂的命令,但外挂的命令是否支持64位,这个要看你使用的具体的外挂程序。
80486推后,AMD推出了一个新折产品,而intel急于推出80586与之抗衡,不幸的是AMD挑起了官司,intel的命名有误导标准之嫌疑——严禁intel再使用数字命名CPU,而正准备发行的intel 80586遇到了大麻烦,为了不改变消费者对其的固有支持,注册了pentium,并根据音译,中文商标为奔腾,其实在拉丁语系中,其意思就是数字5,用来标识自己的586。事实使用数注册的另一个好处就是,在不同的读言系中,都可以做到商标的统一(阿位伯数字是印度人发明,阿位伯向全球传递,任何语言都没有组数字通用,几乎任何语言中都存在阿拉伯数字的),所以在586上市前输掉官司的intel只有使用了Pentium,这也是合理的。
奔腾经历了奔腾,多能奔腾,高能奔腾,麻点奔腾之后,开始使用了Pentium-II,一直到Pentium IV,同期发行赛场之后,转入了Pentium D,Core等多种不同架框的686,而前几代的奔腾与赛扬都是586的。而现在的Pentium D,pEntium E等都是686!
事实上64位上的RAX名称只是汇编语言中的一个助记标,它与寄存器的关系非常小的,至于叫RAX还是你想叫EEAX,那只是一个名字而已,主要是为了人们交流而已,只不过汇编语言也采用了这种人们交流的名称。不要以为计算机会知道它自己一个寄存器叫RAX,它只认识二进制编码,所以在计算使用时0001对应了AX,EAX,RAX,当出现这个指令时,它就知道你要调用的是编码为0001的寄存器了,如果是16位操作数,它就用AX,如果是32位操作数,它就用EAX,如果是64位,用的是全寄存器RAX,换句话来说AH,AL,AX,EAX,RAX指出同一寄存器的不同位长而已。
64位编程时,介绍一个网站:http://www.mouseos.com/x64/extend64.html,看一下能更加深你的理解。 参考技术A 补充楼上的,WIN7的debug还是存在的,但调试的对象是虚拟机的CPU 参考技术B 1,就是一个东西
2、64位寄存器RAX,win7的cmd没有debug命令,可以下个windbg,VS,C::B等IDE也提供调试功能,用Cygwin装GDB来调试也可以
3、从命名来说,586开始就是用奔腾命名了,从指令集等级来说,奔腾是i586等级,奔腾2以后全是是i686等级,x86属于IA-32体系,独立于x86的是IA-64体系,代表是安腾系列CPU。当然CPU不仅仅是IA-32,IA64体系的,还有其他RISC架构的CPU,ARM啊,PowerPC什么的 参考技术C 80286 8086 16位16
8088 80386准32位的16位
主流PC的CPU是64个,但也有32操作系统和64位32。换句话说,可以运行32位操作系统的64位CPU可以运行64位。
如果您使用的是Windows XP 32位,16位和32位程序,你可以写。
如果您使用的是Windows 7,那么你只能写32位,16位,不再支持。
80x86的汇编语言?是8086的16位汇编和80386 32。您可以搜索IA32,IA16,IA64
汇编语言风格,AT&T(类似Unix)和英特尔两种格式。
如果你想了解64编译,我建议你看在英特尔IA64开发商的指南
计算机基础小结
目录
计算机之编程
什么是编程语言
编程语言是人与计算机交流的介质
什么是编程
编程就是使用编程语言编写一个个文件
为什么要编程
为了奴隶计算机,解放劳动力,帮人类完成一个个具体的任务
计算机组成原理
计算机五大组成
CPU
控制器
控制硬件
运算器
进行逻辑运算+算术运算
内存
临时存储数据的硬件
- 优点(相比较于外存):速度快
- 缺点(相比较于外存):临时存储/断电即消失
外存
永久存储数据的硬件
- 优点(相比较于内存):永久存储
- 缺点(相比较于内存):速度慢
输入设备
输入信息的硬件,如键盘/鼠标/u盘
输出设备
输出信息的硬件,如显示器/打印机/u盘
I/O设备
即可输入信息,又可以输出信息的硬件,称为I/O设备
32位和64位
32位
一次性能读取32个二进制位的操作系统
64位
一次性能读取64个二进制位的操作系统
多核CPU
可以同时完成多件事的CPU,如4核CPU则一个大的CPU集成了4个小的CPU
硬盘工作原理
机械硬盘工作原理
- 机械手臂:寻找数据
- 磁道:存储数据
- 扇区:划分磁道
- 平均寻道时间:由于工业水平的限制,为5ms
- 平均延迟时间:以7200r/min的硬盘为例,为4.15ms
\[ 7200(r/min) / 60 = 120(r/s) \1/120(r/s) = 0.0083s = 8.3ms \8.3 / 2 = 4.15ms \\]
- 平均寻找数据时间:5+4.15=9.15ms
固态硬盘工作原理
- 基于算法和电存储的外存
计算机操作系统
文件是什么?
操作系统提供的一个虚拟的单位
应用程序是什么?
应用程序其实就是一堆文件,用来完成具体的某个任务
操作系统能干什么?
接受应用程序/人的外部指令,然后控制硬件
计算机三大组成?
应用程序
应用程序其实就是一堆文件,用来完成具体的某个任务,与人/操作系统交互
操作系统
接受应用程序/人的外部指令,然后控制硬件,与人/应用程序/硬件交互
硬件
最终的目的是用来存储数据,与操作系统交互
应用程序的启动和操作系统的启动?
应用程序的启动
- 双击qq(发送指令给操作系统)
- 操作系统接收指令,将指令转化成0和1发送给CPU
- CPU接收指令,发送给内存
- 内存从硬盘中取出qq的程序,执行,打开qq
操作系统的启动
- 按下开机键(启动一个临时操作系统)
- 临时操作系统唤醒真正的操作系统
编程语言分类
机器语言
- 优点(汇编语言):执行效率高
- 缺点(汇编语言):开发效率低
汇编语言
- 优点(机器语言):开发效率高
- 缺点(机器语言):执行效率低
高级语言
解释型语言
类似于同声传译,写一句翻译一句
- 优点(编译型语言):开发效率高
- 缺点(编译型语言):执行效率低
编译型语言
类似于谷歌翻译,写完所有的代码,一次性编译后得到结果,并且结果可以保存,无法得到及时的报错反馈
- 优点(解释型语言):执行效率高
- 缺点(解释型语言):开发效率低
网络的瓶颈效应
由于网络传输的数据可能为10ms,而Python的代码运行时间为1ms,机器语言的代码运行时间为0.001ms,在你上一段数据运输成功之前,无论你的代码运行时间是1ms,还是0.0000001ms,还是9ms,本质上没啥区别,这就是互联网中的网络的瓶颈效应。
以上是关于汇编语言中的CPU的16位,32位和当今操作系统所指的32位,64位概念有点模湖,请大侠们赐教.的主要内容,如果未能解决你的问题,请参考以下文章