是否可以通过模式切换在64位进程中执行32位代码?

发布于 2024-10-19 02:09:35 字数 464 浏览 6 评论 0原文

在此页面中,http://www.x86-64.org /pipermail/discuss/2004-8月/005020.html 他说有一种方法可以在应用程序中混合 32 位代码和 64 位代码。他假设应用程序是 32 位(兼容模式),然后切换到 64 位模式来执行 64 位代码,反之亦然。

假设我的操作系统是 64 位 Linux,我的应用程序是 64 位。我进行了一次远跳以切换到兼容模式并执行 32 位代码。当我进行系统调用或函数调用时它可以正常工作吗?

兼容模式和64位模式之间的模式切换有开​​销吗?我认为开销之一是我需要单独的 32 位和 64 位堆栈。

我是否可以将这个想法集成到JVM中,也许我可以在64位JVM中动态生成32位代码,并通过模式切换来执行它?

In this page, http://www.x86-64.org/pipermail/discuss/2004-August/005020.html
He said that there is a way to mix 32-bit code and 64-bit code in a application. He assumed the application is 32-bit (in compatibility mode) and then switch to 64-bit mode to execute 64-bit code and vice versa.

Assume my OS is 64-bit linux and my application is 64-bit. I do a far jump to switch to compatibility mode and execute 32-bit code. Does it can work correctly when I do a system call or function call ?

Is there any overhead of mode switching between compatibility mode and 64-bit mode ? I think one of the overhead is I need separate stack for 32-bit and 64-bit.

Could I integrate this idea into JVM, maybe I can dynamic generate 32-bit code in 64-bit JVM, and execute it by mode switching ?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

梦里人 2024-10-26 02:09:35

开放编码的系统调用应该没问题,因为您的 32 位代码将使用 32 位内核入口点。

当然,函数调用只能对其他 32 位代码进行。这包括 libc - 因此您的 32 位代码要么必须是独立的,要么您必须为其所需的库函数提供 thunk。请记住,通常系统调用不会直接调用 - 您通常会通过 32 位代码无法使用的 libc 包装器进行调用。

在模式之间切换肯定会产生开销。您应该查阅处理器文档以了解它是什么。

Open-coded syscalls should be fine, since your 32-bit code will use the 32-bit kernel entry point.

Function calls can only be made to other 32-bit code, of course. This includes libc - so your 32-bit code will either have to be self-contained, or you will have to provide thunks for the library functions that it needs. Remember that usually syscalls are not called directly - you normally go via a libc wrapper that will be unavailable to your 32-bit code.

There is certainly an overhead for switching between modes. You should consult your processor documentation to find out what it is.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文