10

Psycoのドキュメントによると:

参考までに、Psycoは64ビットシステムではまったく機能しません。最新のMacOS/ X 10.6「SnowLeopart」には、64ビットマシンでは64ビットのデフォルトのPythonが付属しているため、この事実は再度注目する価値があります。OS / X 10.6でPsycoを使用する唯一の方法は、カスタムPythonを32ビットモードで再コンパイルすることです。

一般に、プログラムを32ビットから64ビットに移植することは、コードがポインター型に対して特定のサイズを想定している場合、およびその他の同様に小さい(っぽい)問題である場合にのみ実際に問題になります。Psycoはそれほど多くのコードではないことを考えると(Cの〜32K行+ Pythonの〜8K行)、それはどれほど難しいでしょうか?誰かがこれを試し、壁にぶつかったことがありますか?私はまだPsycoのソースをよく見る機会がなかったので、これを調べるのに時間を無駄にしていないかどうかを知って本当に感謝しています...

4

4 に答える 4

4

Christian Tismer, one of the Psyco developers also seems to disagree with the "how hard could it be" - assumption (quoted from here):

Needs to come to x86-64? Why that! Seriously, I would love to do that, but this would be much harder than anybody would expect. Due to the way psyco is written, it would be really half a rewrite to releave it from its 32-bitterness. The 32 bit assumption is implicitly everywhere. It would be straight forward, if the memory model was all 64 bit. But no intel platform is that simple. so long, and thanks for all the fish -- chris

and

hum. It would cost at least 3 or 4 months of full-time work do do that, if not more. I doubt that I can get sponsorship for that.

If you want more details (firm inside knowledge of Psyco probably needed) I guess you can always try to ask on one of the psyco mailing lists ...

于 2010-03-03T19:51:02.483 に答える
3

Psycoは、sizeof(int)== sizeof(void *)がいたるところにあると想定しています。これは、64ビットの呼び出し規約とアセンブラーを書き留めるよりもはるかに困難です。ちなみに、最近、pypyは64ビットのjitをサポートしています。

乾杯、フィジャル

于 2010-09-17T18:40:45.573 に答える
3

psyco はコンパイラであるため、有用なコードを生成するには、基礎となるアセンブリ言語を認識する必要があります。これは、8 つの新しいレジスタ、64 ビット コードの新しいオペコードなどについて知る必要があることを意味します。

さらに、既存のコードと相互運用するには、64 ビット コードと同じ呼び出し規則を使用する必要があります。AMD-64 呼び出し規約は、一部のパラメーターがレジスター (64 ビットの場合、ポインターの場合は rcx,rdx,r8,r9、浮動小数点の場合は Xmm0-Xmm3) で渡されるという点で、古い高速呼び出し規約に似ています。スタックのスピル スペースにプッシュされます。x86 とは異なり、この余分なスペースは通常、可能なすべての呼び出しに対して 1 回割り当てられます。IA64 の規約とアセンブリ言語はまだ異なります。

要するに、これはおそらく思ったほど単純ではないと思います。

于 2010-03-03T19:39:07.867 に答える
1

「...どれくらい難しいですか?」の+1。

ここを見てください:http://codespeak.net/svn/psyco/dist/c/i386/iprocessor.c

その ASM はすべて移植する必要があり、基盤となるプロセッサについてはいたるところに仮定があります。

移植するのが些細なこと (またはそれほど難しくないこと) であれば、それはすでに行われていると言っても過言ではないと思います。

于 2010-03-03T19:43:59.160 に答える