64位操作系统能否运行32位的程序

系统安装、升级讨论
版面规则
我们都知道新人的确很菜,也喜欢抱怨,并且带有浓厚的Windows习惯,但既然在这里询问,我们就应该有责任帮助他们解决问题,而不是直接泼冷水、简单的否定或发表对解决问题没有任何帮助的帖子。乐于分享,以人为本,这正是Ubuntu的精神所在。
回复
头像
zhhtc200
帖子: 91
注册时间: 2009-02-06 18:47

64位操作系统能否运行32位的程序

#1

帖子 zhhtc200 » 2009-09-16 8:43

如题,貌似64位机子命令集长度比32位长一倍,应该是可以运行32位程序阿,如果可以怎么运行
It's a world without wall. Who needs Windows?
netdc
帖子: 15
注册时间: 2006-04-19 16:46

Re: 64位操作系统能否运行32位的程序

#2

帖子 netdc » 2009-09-16 8:47

好像是可以,有个lib32什么的,至少wine可以运行32位的win程序。
头像
懒蜗牛Gentoo
论坛版主
帖子: 7353
注册时间: 2007-03-02 17:36
系统: Linux Mint

Re: 64位操作系统能否运行32位的程序

#3

帖子 懒蜗牛Gentoo » 2009-09-16 8:51

可以的
虽然世上没有完美的东西,但这并不影响我们追求完美,因为只有偏执狂才TMD能成功。
10.04新手入门——笨兔兔讲述自己的故事
头像
eexpress
帖子: 58428
注册时间: 2005-08-14 21:55
来自: 长沙

Re: 64位操作系统能否运行32位的程序

#4

帖子 eexpress » 2009-09-16 9:06

system32什么的命令?
● 鸣学
头像
Kandu
帖子: 108
注册时间: 2008-12-24 12:02
联系:

Re: 64位操作系统能否运行32位的程序

#5

帖子 Kandu » 2009-09-16 9:38

可以,段都是有属性的(听说过段描述符吧),64位段中,除了一些默认用64位寄存器的(比如跳转肯定用rip的),其他指令和32位段没什么区别。比如32位段中mov eax,ebx是0d889H,在64位段中也是0d889H,要mov rax,rbx,前面就加48H前缀,表示是64位指令,32位段中使得操作数为16位要加66H前缀,64位段也一样,比如,mov ax,bx 在64位段和32位段中都是0d88966H
所以,不存在指令长度变成两倍的关系,反而,大多数指令和32位的几乎一模一样
你做过底层编程就明白了。
回复