将Psyco移植到64位可能存在哪些陷阱?

Chi*_*chi 10 c python 64-bit porting psyco

Psyco的文档说:

仅供参考,Psyco根本不适用于任何64位系统.这个事实值得再次注意,现在最新的Mac OS/X 10.6"Snow Leopart"带有64位机器上的64位默认Python.在OS/X 10.6上使用Psyco的唯一方法是在32位模式下重新编译自定义Python.

通常,当代码假定指针类型和其他类似的小(ish)问题具有特定大小时,将程序从32位移植到64位只是一个问题.考虑到Psyco不是很多代码(大约32K行的C + ~8K系列的Python),它有多难?有没有人试过这个并撞墙?我还没有机会好好看看Psyco的来源,所以我真的很感激知道我是否在浪费时间研究这个......

Joe*_*oel 3

由于 psyco 是一个编译器,因此它需要了解底层汇编语言才能生成有用的代码。这意味着它需要了解 8 个新寄存器、64 位代码的新操作码等。

此外,为了与现有代码进行互操作,需要使用与 64 位代码相同的调用约定。AMD-64 调用约定与旧的快速调用约定类似,其中一些参数在寄存器中传递(在 64 位情况下,指针为 rcx、rdx、r8、r9,浮点为 Xmm0-Xmm3),其余参数为推入堆栈上的溢出空间。与 x86 不同,这个额外空间通常为所有可能的调用分配一次。IA64 约定和汇编语言仍然不同。

简而言之,我认为这可能并不像听起来那么简单。