【发布时间】:2011-07-02 03:49:03
【问题描述】:
在此页面中,http://www.x86-64.org/pipermail/discuss/2004-August/005020.html 他说有一种方法可以在应用程序中混合 32 位代码和 64 位代码。他假设应用程序是 32 位的(在兼容模式下),然后切换到 64 位模式以执行 64 位代码,反之亦然。
假设我的操作系统是 64 位 linux,而我的应用程序是 64 位。我做了一个很远的跳转来切换到兼容模式并执行 32 位代码。当我进行系统调用或函数调用时它可以正常工作吗?
兼容模式和 64 位模式之间的模式切换是否有任何开销?我认为开销之一是我需要单独的 32 位和 64 位堆栈。
我能不能把这个想法集成到JVM中,也许我可以在64位JVM中动态生成32位代码,并通过模式切换来执行?
【问题讨论】:
-
如果您使用的是 64 位 JVM,为什么要生成 32 位代码?您可以(几乎)在 64 位代码中执行所有您想要的 32 位操作;即使在 64 位模式下,大多数指令也默认使用 32 位操作数。
-
因为我想比较一下32位代码和64位代码的区别。也许在某些情况下我会有所不同,比如 long 类型的大小,或者每种情况的执行时间。
-
再次阅读帖子,它建议修改 CS——这将调用自定义
ld.so和类似的东西。确保您为此做好准备。
标签: linux jvm 32bit-64bit x86-64