汇编语言中的CPU的16位,32位和当今操作系统所指的32位,64位概念有点模湖,请大侠们赐教.

最近在自学汇编语言,这门语言围绕8086的CPU(8位或16位寄存器)在编程。问题来了:1.汇编语言中所指CPU寄存器的8位,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位的出来?
展开
 我来答
百度网友66a8d48e5
2013-01-22 · TA获得超过7687个赞
知道大有可为答主
回答量:3002
采纳率:12%
帮助的人:3895万
展开全部
操作系统上的位宽与CPU所指的位宽不是同一概念。CPU的位宽指的是寄存器最大位数。如果64位CPU最大的寄存器是64bits。而寄存器位宽就是所指的寄存器的位数。如果8位寄存器ah,ax。

操作系统上的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,看一下能更加深你的理解。
hr_999
2013-01-22 · TA获得超过2246个赞
知道大有可为答主
回答量:2009
采纳率:0%
帮助的人:1563万
展开全部
补充楼上的,WIN7的debug还是存在的,但调试的对象是虚拟机的CPU
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
索贝尔上尉
2013-01-22 · TA获得超过3318个赞
知道大有可为答主
回答量:1837
采纳率:66%
帮助的人:1795万
展开全部
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什么的
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
sunaibudiao
2013-04-09 · TA获得超过4761个赞
知道大有可为答主
回答量:1.6万
采纳率:3%
帮助的人:3147万
展开全部
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开发商的指南
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式