这里有人用64位汇编编过程的吗?

oomm 2006-07-31 04:51:09
如题,有人用64位CPU指令集在IA-64结构处理器的电脑上编过程吗? 我是说真正编了程序,用了RAX等64位寄存器, 还有64位CPU新的 R8 ~ R15 寄存器,还试过显式并行指令代码EPIC(Explicit Parallel Instruction Code)的9条指令吗?你用的工具是“Intel IA-64 Assembly Assistant”吗?能不能给个你运行的一段64位汇编的例子,讲解一下。

抱歉,由于我的电脑CPU是32位的,没法试64位汇编,感到好奇,如果我买了62位新电脑,一定试下。请先试过的尝了螃蟹的,前来这里讲解一下,分享一下你的体验,好吗?
...全文
1148 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
Cody2k3 2006-08-09
  • 打赏
  • 举报
回复
不用争了,我来做个归纳:

IA64:Intel所推出的取代IA32的架构,原则上不兼容IA32,代表是Ipf(Itanium),不过可以临时切换到32位模式,或者在64位模式下使用软件模拟器(已经有windows和linux下的),其中软件模拟要比硬件模拟效能高出50%
Amd64: Amd所推出的64位架构,不过由于Amd64先推出的原因,在部分操作系统,比如Solari上,用Amd64泛指Amd64和Em64T
Em64T:Intel在Amd推出Amd64后调整市场策略所推出的兼容Amd64的架构
X86-64: Amd所起的Amd64的别名,后来被用来泛指Amd64和Em64t,比如在linux上
X64:为IA32的超集,泛指兼容Amd64的架构,为微软所起的vendor-neutral的名字,包含Amd64和Em64T,同时还可以包含其他公司的实现
64bit Architecture:64位架构不是新东西,之前有渐渐淡出市场的Alpha,现在有占市场小份额的IBM 的Power架构, Sun的Sparc架构, Apple也曾经有XServer架构

目前支持64位的windows操作系统
Windows XP Professional x64 Edition
Windows Server 2003, Standard x64 Edition
Windows Server 2003, Enterprise x64 Edition
Windows Server 2003, Datacenter x64 Edition
Windows Vista x64 Edition (in development)
bacmoz 2006-08-09
  • 打赏
  • 举报
回复
楼上厉害!不知道能不能在MS的VC++ 2005内联汇编里嵌入64位汇编代码?就是在__asm{}里能不能允许嵌入64位汇编代码?我知道32位汇编允许的。

要有64位操作系统支持(Windows)
我就是因为不好下载64位windows才转到linux上的
  • 打赏
  • 举报
回复
1. 如果我认为IA-64是指“Itanium Architecture”,难道我不知道IA-32为何物?
2. IA-64究竟指什么架构,你只要搜索一下“IA-64”就知道了。这个不需要再多说了。
3. IA-32的直接后继者是X86-64,是由AMD开发的,Intel兼容AMD扩展的架构也是x86-64,而不是IA-64。
4. x86-64与IA-64是完全不同的64位结构,互不兼容。基于这种原因,IA-64不可能是泛指“Intel的64位架构”。
oomm 2006-08-07
  • 打赏
  • 举报
回复
MS的64位汇编编程资源:

http://www.microsoft.com/whdc/system/platform/64bit/default.mspx
oomm 2006-08-07
  • 打赏
  • 举报
回复
to DelphiGuy
“IA-64是指Intel的Itanium架构。”-----------你理解错了,IA是Intel Architecture,而不是Itanium Architecture,可能是你看到intel网站上提供的IA-64资料和指令集都是Itanium架构CPU的,误以为IA-64是Itanium架构了,Itanium架构包含在IA-64里面。intel cpu的32位架构是IA-32,64位架构是IA-64了。由于AMD先开发出64位CPU,先定义了64位指令集,IA -64参照和大部分兼容了AMD的x86-64。


关于 IA-64 与 Itanium架构、 AMD的64位架构 三者关系

你看下下文就清楚了:
http://it.sohu.com/20050125/n224100168.shtml
oomm 2006-08-07
  • 打赏
  • 举报
回复
楼上厉害!不知道能不能在MS的VC++ 2005内联汇编里嵌入64位汇编代码?就是在__asm{}里能不能允许嵌入64位汇编代码?我知道32位汇编允许的。
bacmoz 2006-08-05
  • 打赏
  • 举报
回复
我现在业余用AMDx86-64写写小程序玩
操作系统是64位的fedora core 5
用gcc编译,嵌入汇编(at&t格式)
Introduction to GCC Inline Asm :
http://asm.sourceforge.net/articles/rmiyagi-inline-asm.txt

GCC-Inline-Assembly-HOWTO :
http://www.ibiblio.org/gferg/ldp/GCC-Inline-Assembly-HOWTO.html

x86-64 Machine-Level Programming :
http://www.cs.cmu.edu/~fp/courses/15213-s06/misc/asm64-handout.pdf

The AMD x86-64 Architecture Programmer's Overview :
http://www.amd.com/us-en/assets/content_type/white_papers_and_tech_docs/x86-64_overview.pdf

AMD64 Architecture Programmer's Manual Volume (1 to 5):
http://developer.amd.com/documentation.aspx
  • 打赏
  • 举报
回复
中国软件开发业和美欧有差距是事实,
但是要和印日比较嘛,就很难说了。
阿三基本就是做外包,其实就是代码民工,和中国那些出口服装、鞋的血汗工厂没多大差别。
和鬼子相比,中国在软件的基础水平上也要略胜一筹,如果不是说超过它太多的话。
不论是处理器设计、操作系统、编译器,中国早在60年代都自己搞出来了。
而鬼子基本上是躺在美国的技术上爬,在宇航控制、雷达、武器火控系统的软件方面与中国更是没法比。
中国其实就是商业软件开发方面感觉差一些。
  • 打赏
  • 举报
回复
楼主说的是x86-64,是AMD定义的结构,现在Intel也在兼容这个结构。
IA-64是指Intel的Itanium架构。
两者差别极大,完全不是一回事。

大熊猫侯佩 2006-08-02
  • 打赏
  • 举报
回复
准备搞~还没搞~
p_ssg 2006-08-01
  • 打赏
  • 举报
回复
Different Cpu support different IA64 instruments
In intel Itanium Architecture, instruments are encoded into bundles:
{ .mib
memory inst
arith inst;<--stop bit
branch inst
}
instruments in a bundle are executed paralize
for details you can read the Softerware Developer`s manual
nobleperson 2006-08-01
  • 打赏
  • 举报
回复
没编过

不过在网上看过64汇编代码例程,象下面这样:
{ .mii
ld4 r4 = [r33]
mov r3 = r33 ;;
add r33 = 4, r3
}

{ .mii
mov r2 = r56
add r8 = 5, r8 ;;
add r32 = 5, r4
}

{ .mib
cmp4.lt p6,p7=r2,r33
nop.i 999
(p7) br.cond.dpnt START
}

搞超级解霸的那么梁肇新前些年出过一本书"编程高手箴言",里面提到国外程序员早都研究64位汇编了,国内很少有人研究,没办法,国内程序员饭碗重要,不会有超前意识和眼光,等到欧美流行了,再去拣人家的剩饭吃。逛逛国外的汇编论坛就知道64位汇编现在已经很流行了,不过国内还没怎么有动静,这就是中国软件开发跟欧美印日的差距所在,人家先知先觉,等你动起来时,人家早都超在你前头领先很多了,你还得在人家前已解决了的困惑和问题的泥潭上挣扎,你能不落后于人吗?
oomm 2006-07-31
  • 打赏
  • 举报
回复
"如果我买了62位新电脑"---- 打错了,是64位,不是62位
前言 从Windows出现开始,语言似乎在慢慢地销声匿迹,但本书可以让人放弃这个观点,其实在Win32环境下,语言依然强大。 Why——为什么选择Win32 选择Win32的理由是什么呢? 在DOS时代,学习就是学习系统底层程的代名词,仅要成为一名入门级的程序员,就需要学习从CPU结构、CPU工作方式、各种硬件的程方法到DOS工作方式等范围很广的知识。随着Windows时代的到来,Windows像一堵巨大的墙,把我们和计算机的硬件隔离开。对于DOS的程序员来说,就像在一夜之间,我们发现自己曾经学过的几乎所有的东西都被Windows封装到内核中去了,由于保护模式的存在,我们又无法像在DOS下那样闯入系统内核为所欲为。在Windows下用任何语言程都必须遵循Windows的规范,也不例外,也就是说,不再是一种“有特权”的语言。面对汹涌而来的Visual C++,Visual Basic,PowerBuilder和Java等各个领域的猛将,从DOS时代“为所欲为”的“系统警察”岗位下岗,在其他领域又没有一技之长,语言似乎失去了生存的意义,有很多人在DOS转向Windows的时候放弃了语言。 但是经过短暂的失落,摆正了自己在系统中的位置,我们发现从“系统警察”转换到遵循Windows规范的“好市民”后,语言又慢慢地在这个世界流行起来了。毕竟,不能为所欲为也可以有好的一面,我们可以不必再考虑一些老大难的问题,如程序运行时会面对什么样的显示卡,如何驱动不同的打印机,内存不够了如何用磁盘交换,等等。我们也可以在了解更少硬件知识的情况下就可以掌握Win32的程。而且,我们惊喜地发现,做了“好市民”以后,我们反而拥有了和其他语言同样的权利——为了做图形和界面等方面的功能,程序员在DOS时代连做梦都在羡慕C语言庞大的函数库,而现在,Windows为我们提供了比这还要多得多的函数,以至于其他大部分语言可以做出来的功能,都可以做,而其他语言做不到的功能,照样可以做!所以这就是理由之一:Win32可以当做一种功能强大的开发语言使用,使用它完全可以开发出大型的软件来。 正因为Win32看上去不再那样低级,于是有读者曾经提出:Win32讲的都是用API来写程序,和高级语言差不多,以前在DOS下使用的中断什么的都不能用,所以没有什么新奇的了。还有读者认为本书只不过是MSDN的版本而已。言下之意就是:学就是为了了解高级语言底下一层的功能,但现在Win32却使用和C++等语言相同的API接口,既然和高级语言处于同一个级别,我们为什么还要去和机器指令打交道呢,还不如去学Visual C++方便。 但是我们可以这样问一问自己: 问:在DOS中我们为什么用中断功能? 答:为了使用DOS内核提供的功能。 问:在DOS中我们常常自己用操作I/O端口的方法读写硬盘或操作显卡吗? 答:不,我们用系统提供的int 13h和int 10h。 …… 同样,在Win32里使用API也是为了使用Windows内核提供的功能。只不过使用的方式不再是中断方式而已,这不是Win32语言“高级化”了,而是高级语言因为使用Windows的API接口而“低级化”了,其代价就是无法移植到其他系统,用Visual C++写的程序是无法移植到其他操作系统平台上的,只有和平台无关的ANSI C++等才能算是真正意义上的高级语言。 其实,任何语言都是和操作系统密切相关的,不管是DOS、Win32,还是Linux,都是基于特定的操作系统的,如果一定要绕过操作系统,那么就不会有DOS和Win32的区别了,但是这样的话我们不是在学,而是在自己开发操作系统。高级语言在不同的操作系统上看起来都差不多,但作为一种低级语言,不同操作系统上的就是不同的世界。所以,既然Windows和DOS是两个完全不同的操作系统,我们就必须抛弃DOS中的大部分概念从头开始学习Win32。这就是理由之二:Win32是Windows环境下一种全新的程语言。 Win32环境下的很多高级语言,如Visual C++和Visual Basic等,一如既往地对实现的细节进行了或深或浅的封装,就连最能表现Windows特征的部分,如消息循环和多线程的处理等内容也都被隐藏封装,使我们在使用它们进行可视化程的同时,无法全面了解Win32程序运行的具体方式。在学习Win32以后,这些隐藏在高级语言后面的细节就暴露出来了。 由于封装的关系,各种高级语言或多或少存在某种“缺陷”,比如VB不支持指针,结果很多需要使用指针的API用起来就很不方便,像多线程一类的特征在VB中就无法实现,PowerBuilder也是如此;C语言已经是最灵活的高级语言了,但还是无法在代码级别处理某些需求;而语言见到的是一个最真实的操作系统,它可以用最灵活的方式使用各种系统功能,第13章中有关进程隐藏的内容就是最好的写照。所以理由之三就是:使用Win32语言是了解操作系统运行细节的最佳方式。 最后的理由根本不是理由,而是必然的选择,当我们在Windows环境下进行加密解密、逆向工程,还有病毒、木马等有害代码的分析和防治工作时,Win32是唯一的选择。在任何讨论这方面内容的书籍中,代码的篇幅总是很大的。因此,要想深入了解这些内容的前提就是深入程。 How——如何学习Win32 以往的书籍往往把重点放在硬件结构和指令上,讲述了一大堆电路框图和指令列表,把大家搞得晕晕乎乎后,再举出一些重量级的例子,不是一些像数组、矩阵计算一类的复杂运算,就是开始图形模式画图,以至于大家看完以后就再也找不到北了!实际上,这些例子不是太难了,而是太枯燥了。有人说,学就像考大学,千军万马过独木桥,太多的人中途放弃了,只有少数人坚持到最后。 笔者认为:学习应该在轻松的环境下进行,在学习中使用的例子不一定太复杂,但一定要有吸引力。用写复杂的运算程序固然会比C更有效率,但同样的事在C中用一个表达式就全部搞定了,从这里开始学,给人的感觉就像从复杂的公式开始学算术,要知道,加法还没有学会呢!而对于高级语言封装起来的系统功能,用解释起来就非常直接,非常自然,也更容易懂。以笔者自己学过程来说,那时候是1990年,刚好是中国第一次病毒大流行,大家的计算机上都是那个病毒的开山鼻祖——乒乓病毒,在流行DOS的时期,看着在屏幕上蹦的小球,心中就有一个问题:如何出这样一个玩意来呢?要知道DOS是单任务的,而那个球在别的程序运行的时候照样蹦!这用当时流行的FORTRAN、C等课程中学到的任何知识都无法解释,因为这些课程中不可能有TSR、中断、引导区等内容。带着这样一个疑问学习,在分析乒乓病毒的过程中啃一条条不懂的指令,病毒分析完了,课也学完了,而且反过来看那些复杂的计算程序都是那么顺理成章,不攻自破了。实际上,从一些实用的系统功能开始学习远比学矩阵计算容易理解。 正如最经典的C程序就是那个“Hello,World!”一样,这个程序的有名并不是因为它用高深复杂的语句放倒了一大批人,而是它以最简单易懂的方式让人们走入C语言的大门。对于Win32也是如此,从最简单的例子开始总是没错的,笔者建议读者跟随本书中从简到繁的例子,努力做到理解并灵活引用这些例子中的各种功能,正如“熟读唐诗三百首,不会写诗也会吟”,最后能够熟练地使用Win32来解决各种程需求就是最大的胜利。 另外,正如前面讲到的,语言的学习必须和操作系统紧密结合。经过简单的调查,笔者发现很多高校使用的教程还是停留在清华91版《IBM-PC语言程序设计》之类的教材上,虽然这些教材中基础知识部分永远不会过时,但涉及操作系统的部分还是停留在DOS阶段。随着DOS操作系统的悄然引退,继续把精力花在上面是一种浪费,因为任何语言都必须有应用的平台,否则课程学完之后会尴尬地发现没有地方可以应用。笔者认为,在《IBM-PC语言程序设计》之类传统教材中的基础部分学习完毕以后,重点就应该转向Win32,以及保护模式方面的知识。 关于本书的内容 本书尝试从写应用程序的角度,从“Hello,World”这个简单的例子开始到写多线程、注册表和网络通信等复杂的程序,通过70多个从简单到复杂的例子,逐步深入Win32程的方方面面。笔者从事程已经有十几年的历史了,从8086时代的DOS程开始到当前的Win32程,从一个初学者到现在能利用Win32来解决大部分程需求,中间也经过了很长时间的摸索和大量的挫折,所以笔者很清楚初学者在哪些地方会遇到问题,但是涉及Win32的书籍却实在太少了。正是因为如此,笔者决心把本书的目标定为:能让读者入门并在最后能熟练掌握Win32程,而不是那种深入系统奥秘一类的书籍。 从这个目标出发,本书的选材中尽量去掉已经有其他书籍详细讨论的部分,因为要一本书涉及全部方面是不现实的。内容全面就必然不精,内容深刻就必须围绕一个中心点,所以本书的内容并不详细讨论一般教材的基础部分,如处理器结构和保护模式等,也不准备涉及Windows驱动程序、COM程或者其他能够冠以“密技”头衔的内容。本书主要的内容将放在32位宏对比DOS所不同的部分,以及Win32应用程序的实现上。不求全面,只求精也!(说句老实话,也不敢对自己不精通的地方妄加评论,以免破坏自己的良好形象。

21,459

社区成员

发帖
与我相关
我的任务
社区描述
汇编语言(Assembly Language)是任何一种用于电子计算机、微处理器、微控制器或其他可编程器件的低级语言,亦称为符号语言。
社区管理员
  • 汇编语言
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧