首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >是否可以通过模式切换在64位进程中执行32位代码?

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

Stack Overflow用户
提问于 2011-02-23 00:53:45
回答 1查看 2.3K关注 0票数 7

在这个页面中,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位代码,并通过模式切换来执行它?

EN

回答 1

Stack Overflow用户

发布于 2011-02-23 14:54:44

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

当然,函数调用只能对其他32位代码进行。这包括libc -所以你的32位代码要么必须是自包含的,要么你必须为它需要的库函数提供块。请记住,通常不会直接调用syscalls -通常是通过32位代码不可用的libc包装器调用的。

当然,在不同模式之间切换也会有开销。您应该参考您的处理器文档来找出它是什么。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5081203

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档