我想编译C代码,就像它是32位应用程序(因此sizeof(void *)将是4),但是在64位应用程序中运行它。
我可以保证此代码不会收到指向> 4 GB地址空间等的指针
我只需要一个工具链就可以了。
答案 0 :(得分:3)
Linux有一个x32 memory model,它是带有32位指针的64位代码。这似乎更适合“请不要破坏在unsigned int
中存储指针的代码!”用法。但整个应用程序应该使用该目标构建。
但是,在同一进程中组合x32和x86_64代码比x86和x86_64困难得多,因为它不需要CPU切换模式。
答案 1 :(得分:1)
如何将C代码编译为32位代码并在64位应用程序中运行?
在Windows和Linux上,您无法在64位进程中执行32位代码。或者反之亦然。