代码之家  ›  专栏  ›  技术社区  ›  Chinmay Kanchi

将Psyco移植到64位有哪些可能的陷阱?

  •  10
  • Chinmay Kanchi  · 技术社区  · 16 年前

    心理医生说:

    仅供参考,Psyco没有 这个事实值得再次注意, 现在最新的MacOS/X10.6 64位对64位的Python 机器。唯一能用Psyco的方法 32位模式下的Python。

    一般来说,只有当代码假定指针类型具有一定的大小和其他类似的小问题时,才真正需要将程序从32位移植到64位。考虑到Psyco并不是一大堆代码(约32K行C+8K行Python),这有多难呢?有人试过这个然后撞到墙了吗?我还没有机会好好看看心理学的资料,所以我很感激知道我是不是在浪费时间研究这个。。。

    4 回复  |  直到 16 年前
        1
  •  3
  •   Joel    16 年前

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

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

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

        2
  •  4
  •   ChristopheD    16 年前

    here ):

    需要到x86-64吗?为什么这样! 说真的,我很乐意这么做, 任何人都会想到的。因为路的缘故 psyco写的,真的 半个重写就可以把它从 32苦涩。32位假设 无处不在。会的 就这么简单。再见,谢谢 为了所有的鱼——克里斯

    和

    如果你想要更多的细节(公司内部的Psyco知识可能需要),我想你可以尝试问一个Psyco邮件列表。。。

        3
  •  3
  •   fijal    16 年前

    干杯, 菲哈尔

        4
  •  1
  •   Seth    16 年前

    +1代表“。。。有多难?”。

    请看这里: http://codespeak.net/svn/psyco/dist/c/i386/iprocessor.c

    所有这些ASM都必须进行移植,而且对底层处理器的假设无处不在。

    我认为可以公平地说,如果移植是微不足道的(或者不是太难),那么就已经完成了。

    推荐文章