在本文中,您将会了解到关于delphi–对象文件的64位链接的新资讯,并给出一些关于.Delphi7升级到Delphi2010、DelphiXE、DelphiXE2总结、64位Delphi可以静态链接
在本文中,您将会了解到关于delphi – 对象文件的64位链接的新资讯,并给出一些关于.Delphi7升级到Delphi 2010、Delphi XE、Delphi XE2总结、64位Delphi可以静态链接到编译C对象文件吗?、delphi 2010中文版64位、Delphi 64位asm编译错误的实用技巧。
本文目录一览:- delphi – 对象文件的64位链接
- .Delphi7升级到Delphi 2010、Delphi XE、Delphi XE2总结
- 64位Delphi可以静态链接到编译C对象文件吗?
- delphi 2010中文版64位
- Delphi 64位asm编译错误
delphi – 对象文件的64位链接
Delphi 7可以生成c或c目标文件.是否可以使用第三方链接器从这些目标文件创建64位DLL?
解决方法
目前,最好的办法是使用FreePascal,它可以生成64位DLL.有一个即将推出的64位版本的Delphi,但其发布日期未知.
另一种选择是强制使用32位版本的JVM,如果可能的话.
.Delphi7升级到Delphi 2010、Delphi XE、Delphi XE2总结
总结
以上是小编为你收集整理的.Delphi7升级到Delphi 2010、Delphi XE、Delphi XE2总结全部内容。
如果觉得小编网站内容还不错,欢迎将小编网站推荐给好友。
64位Delphi可以静态链接到编译C对象文件吗?
我正在使用bcc32版本5.5进行编译,但是如果Embarcadero C编译器尚未输出64位对象,我不介意使用哪个编译器.
解决方法
其他值得注意的是,虽然Delphi 64位可以链接到COFF对象文件(最终还将支持ELF64),32位Delphi支持与C Builder建立的OMF对象文件的链接,而新的XE2,32位COFF对象文件可以使用MSVC.同样的注意事项也适用.
delphi 2010中文版64位
软件介绍
delphi 2010 下载这个版本的来源于官方 RTM 正式试用版,版权归 Embarcadero 所有,请在下载后 24 小时内删除。重新打包纯粹个人兴趣所致,希望能方便网友测试、交流。作为 Delphi 多年的 Fans,我们都希望 Delphi 能做得更好!如果您觉得 Delphi 2010 不错,请购买正版,更好的支持 Embarcadero 的发展!
请仔细看使用说明觉对真的 本人亲自测试
Delphi新版本(D2010)简介:
1. 多核的支持 / 异步方法 (VC中早就拥有的OpenMP,在Delphi中也很快就有了)
2. 内置的Direct 2D模块及开发库
3. 将会拥有一个能同时运作于x86和x64的IDE,在此IDE下将会有跨平台编译器,能够编译用于linux和MAC的应用程序。(一次编码 + 选择编译器 = 多个平台下可运行的副本,对于游戏开发太有用了,我们再也没有必要特地为linux或MAC开发游戏,拿Windows下的代码来重新编译吧)
4. 将会支持windows7下的触摸式编程,对手势事件的感知,比如说一个手指从屏幕划过,或者两个手指从上移动到下,甚至是用一个手掌来拍屏幕,这些不同的动作都能感知到,并且处理它们。(Windows7的特性,微软曾表示,会发布用于VC的Touch开发SDK,但是没有计划将该SDK集成到 IDE,Delphi将是Win7下RAD Touch开发的领路者)
5. 将会支持手持设备的开发,比如说工业的设备,或是手机
6. 强化的DataSnap,将可以完美的支持在Delphi,C++Builder和Delphi Prism之间传递数据
7. 可以调试数据库中的存储过程(Store Procedure)和函数(Function),并帮助数据库找出问题
8. 多人合作模式的进化,避免写过多过长的代码,CodeGear将进一步致力于减少代码量,在提高开发效率的同时,也保证产品的质量(这才是Delphi的真正意义所在!!)
9. 将支持云计算(这个不用说了吧,现在广为流行的云计算)
10. 将支持函数式编程,这需要很多时间,据David估计是两年后会实现
以上的10条,足以让我们激动了吧?Win7的特性,据我所知,微软内部有SDK,但是却从未打算在语言,或是IDE上体现出来,Delphi将在 Touch Development上引领一个时代。同时,类似于Erlang的分布式,函数式编程,虽说要比较久才能看到,但是由此我们看到了CodeGear的努力。
然后是一些FAQ,David亲自回答了我们的问题,并且对Delphi的将来,他也是非常的乐观
对于我们来说,我们自然是希望了解得越多越好,有些问题也问得很尖刻,但是David还是给出了让我们较为满意的答复
一、 技术类
1. Delphi什么时候能原生支持类似于parallel.for的多核并行开发?
[David] Delphi肯定会支持多核并行的开发,但是不是现在,可能是下一个版本
2. 有计划让Delphi发展成类似于Erlang的分布式语言吗?是否会提供分布式开发库?
[David] 似乎DataSnap已经能够满足类似的需求了,你可以用它来做分布式应用。当然我们是有计划实现分布式的函数式编程的,这需要大幅修改编译器
3. B/S开发能否加强?能否使用类似于JSP/PHP的模式?
[David] 我们现在重点在VCL for the Web上,VCL for the Web 11和以往的版本相比有着天壤之别,它可以像一般的Delphi开发那样,拖放式开发,也可以支持RIA。VCL for the Web 11已经可以支持IIS等许多服务器了。我觉得它已经很强了。(VCL for the Web 11 已经可以被部署在支持IIS,Apache,ISAPI,NSAPI等各种服务器上,并且可以实现不需要本地运行时库的RIA应用,比 Silverlight或是Flash都来得优越)
4. 能否支持Native RIA? 能否不需要用户安装类似于SilverLight的运行时库
[David] VCL for the Web的目标与Silverlight不同(其他的内容参考上一条)
5. 是否有计划实现针对敏捷开发的Delphi Doc?
[David] 新版本的Delphi会带有一个Source Control System,用于满足多人合作开发的需求,它的功能比单纯的Document强得多
6. Delphi的类能否被序列化成XML?能否从XML加载一个类?
[David] 从XML加载类是不可能的,类里边的方法不能够通过XML来描述,我是指Native的语言都不可能这样,如果想在Server和Client之间传递一个类的话,可以用DataSnap
7. 什么时候能支持x64的操作系统?
[David] x64的计划很早就有了,但是我们没有足够的人力,估计还要再等下个版本,或许是2011年?
8. 有打算支持跨平台吗?特别是移动应用平台,如Symbian和Windows Mobile
[David] 跨平台肯定会支持的,而且我们以前也做过kylix,但是很可惜的,Borland觉得kylix是浪费时间,于是终止了它。但是现在它又被提上日程了。 Windows Mobile?可以用Delphi Prism开发,其实我自己的感觉,用Visual Studio可能更好(David 都认为开发WM的程序用.NET比较好,看来Delphi不太会往WM方向发展了)
二、 意见类
9. 反射机制能再做得好一点吗?我们想放弃RTTI
[David] 这的确是需要考虑的地方,当然RTTI我们不会放弃的
10. 希望在支持Unicode的前提下,让新版本的Delphi能兼容老版本的代码
[David] 很抱歉这是不可能的,从老版本移植代码过来,由于Unicode的问题,必须修改一些代码。我们也在努力的使这个修改变得更少。(这点我个人还是难以认同的,理由还是那句话,为什么VC可以而Delphi不行)
11. Delphi2009的bug多得难以忍受,不知Delphi2010是否会改善?
[David] 现在的Update3应该没有多少bug了吧?我记得上次修正了300多个问题,如果是用的早期版本,还是换上update 3吧。Delphi2010会在Delphi2009 update3的基础上进行改进,不会再带上以前的bug的。
12. IDE是否能够支持将Delphi代码转换成其他语言,并按用户的喜好用不同的编译器来编译?
[David] 不同的语言使用不同的运行时库,就算语法上可以转换,也无法将运行时库转换了。而且语法上的转换也需要花费大量的劳动,并且没有意义。
13. Embarcadero / CodeGear是否有计划为Delphi编写类似于微软MSDN的文档库?
[David] 我们有CDN,和MSDN差不多的,同样的架构,而且现在也有很多人向QC提交内容,这些都会被收录的。CDN会越来越丰富,Delphi也可以自己更新到CDN的内容。(可以通过CDN查看网路上别人的开发经验,这点比单纯的帮助文档好得多了,而且这次CG向CDN添加了大量的开发实例)
14. Delphi是否会支持内建的Python或是Perl,甚至是Ruby这样的脚本?
[David] 不会支持,据我所知已经有第三方的厂商支持了吧?
三、 方向类
15. Delphi是否打算成为一个平台,是否会提出自己的标准?
[David] 我不知道你所说的平台是指什么,不过Delphi是一个RAD的,拥有很多控件的,能可视开发的工具,它的标准就是现行的标准。
16. Delphi的编译器是否有开源的打算?
[David] 不会开源,这是公司的商业模式决定的,我们还想靠编译器来赚钱
17. Embarcadero / CodeGear如何看待用户的体验?
[David] 我们对用户的体验非常重视,用户有任何的问题都可以反馈到QC上来,我们会极积处理采纳的。
18. Embarcadero / CodeGear 如何看待来自FreePascal /Lazarus的竞争?
[David] 我们从来没有认为FreePascal或是Lazarus会对Delphi构成威胁,Delphi原本就是从Pascal扩展而来的,做了许许多多的扩充,现在组件也非常丰富了,而Lazarus的编译器远远及不上Delphi,它还借用了许多原本属于Delphi的库,自己本身的组件很少。如果说跨平台的话,Delphi也很快就有了。(CG还是很乐观的,等Delphi的跨平台面世后,lazarus还会有存活的余地吗?)
19.Embarcadero / CodeGear 认为Delphi的主要发展方向是怎么样的?
[David] 我当然希望它成为一个开发语言中的优秀者,最近的工作主要集中在DBX,DataSnap和跨平台的一些事情上。我们当然也希望用户可以用Delphi来开发一切
Delphi 64位asm编译错误
[dcc64 Error] Project1.dpr(12): E2116 Invalid combination of opcode and operands [dcc64 Error] Project1.dpr(13): E2116 Invalid combination of opcode and operands [dcc64 Error] Project1.dpr(20): E2116 Invalid combination of opcode and operands
12号线& 13:
fld Y fld X
第20行:
fld X
不幸的是我没有装配技能,而且我正在使用第三方代码,我需要将其移植到64位.你能帮助我使它在32位和64位上工作吗?
function PartArcTan(Y,X: Extended): Extended; asm fld Y // st(0) = Y fld X // st(0) = X fpatan // st(0) = ArcTan(Y,X) fwait end; function ArcSin(X: Extended): Extended; // -1 <= X <= 1 asm fld X // st(0) = X fld st(0) // st(1) = X fmul st(0),st(0) // st(0) = Sqr(X) fld1 // st(0) = 1 fsubrp st(1),st(0) // st(0) = 1 - Sqr(X) fsqrt // st(0) = Sqrt(1 - Sqr(X)) fpatan // st(0) = ArcTan(X,Sqrt(1 - X*X)) fwait end;
解决方法
是的,x87单元仍然存在,但相比之下它很慢.另一个问题是x64 ABI假定您将使用SSE单元.参数到达SSE寄存器.浮点值在SSE寄存器中返回.在SSE和x87单位之间传输值是毫无意义的(更不用说相当辛苦和耗时).更重要的是,浮点控制,异常掩码是为SSE单元初始化的,但是你确定它们将被正确设置为SSE单元.
因此,鉴于所有这些,我强烈建议您确保所有浮点代码都在x64下的SSE单元上执行.我认为只有一个案例可以用于使用x87寄存器是一种算法,它需要x87支持的10字节扩展类型,而不是SSE.这里情况不同.
现在,移植到SSE单元并不像将操作码转换为SSE等价物那么简单.那是因为SSE浮动单元的内置功能要少得多.例如,SSE操作码中不包含三角函数.
因此,处理此问题的正确方法是切换到使用Pascal代码.这些功能可分别由Math.ArcTan2
和Math.ArcSin
替换.
为了详细说明这一点,让我们看一下在x64下在x87上进行计算所涉及的内容. ArcSin的代码如下:
function ArcSin(X: Double): Double; // to be 100% clear,do **not** use this code asm movq [rsp-8],xmm0 // X arrives in xmm0,move it to stack memory fld qword ptr [rsp-8] // Now load X into the x87 unit fld st(0) // calculation code exactly as before fmul st(0),st(0) fld1 fsubrp st(1),st(0) fsqrt fpatan fwait fstp qword ptr [rsp-8] // but Now we need to move the return value movq xmm0,[rsp-8] // back into xmm0,again via the stack end;
注意事项:
> x64 ABI表示输入参数到达xmm0.我们无法将其直接加载到x87单元中.所以我们必须从堆栈中的xmm0转移到暂存内存,然后从那里加载到x87单元中.
>返回值时我们必须做类似的事情.该值以xmm0返回,由ABI指定.所以我们需要移出x87单元,刮开堆栈内存,然后加载到xmm0.
>我们完全忽略了浮点控制字:异常屏蔽,精度和舍入控制等.如果你要这样做,你需要组建一个机制来确保x87单元的控制字以理智的方式处理.
因此,也许这可以作为对希望使用x87在x64下执行浮点运算的未来访问者的警告.
我们今天的关于delphi – 对象文件的64位链接的分享已经告一段落,感谢您的关注,如果您想了解更多关于.Delphi7升级到Delphi 2010、Delphi XE、Delphi XE2总结、64位Delphi可以静态链接到编译C对象文件吗?、delphi 2010中文版64位、Delphi 64位asm编译错误的相关信息,请在本站查询。
本文标签: