2012-05-13から1日間の記事一覧
第4回 コンパイラ実装会で出た質問です。※ 例は32bit Windows限定のコードです。【追記】Python版は以下を参照してください。 PythonによるJITで関数呼び出し 相対アドレス i386のcall命令は相対アドレスで指定するため、JITで呼ぼうとすると少し苦労します…
第3回 コンパイラ実装会で@uho_iiotokoさんがBrainf*ckのトランスレータを実装されているとき、ちょっと面白いことが起きました。元はC言語で実装されたBrainf*ckからアセンブラへのトランスレータです。トランスレート対象がC言語でも同じ結果となるため、P…
Pythonでは関数のアドレスを指定して呼び出せます。以下の例は適当なアドレスなので、呼び出してもエラーになります。 >>> from ctypes import * >>> f = CFUNCTYPE(None)(0x1234) >>> f() Traceback (most recent call last): File "<stdin>", line 1, in <module> Windows</module></stdin>…