Python プログラムをIEEE-694 のようなマイクロプロセッサ標準アセンブリ言語に変換することは可能ですか? アセンブリ構文は、これ またはこれに近いものです: http://www.ethicalhacker.net/content/view/152/2/
3 に答える
python を Cにコンパイルし、選択した C コンパイラを使用してアセンブリに取り掛かります。
または、ターゲットとして LLVM を指定してPyPyを使用し、 LLVM 静的コンパイラを使用して、ターゲット アーキテクチャのアセンブリ言語を生成します。
C、FORTRAN、COBOL などとは異なります。ラムダ計算または自動メモリ管理をサポートする言語は、アセンブリに直接コンパイルできません。ただし、インタープリターをマイクロコードまたはブートストラップ プログラムで提供して、ギャップを埋め、「コンパイル済み」の Python、LISP などを許可することができます。コンパイルされたバイナリ。)
Python は動的型付け言語であるため、アセンブリ プログラムが Python のランタイム環境/ライブラリを使用してオブジェクトを動的に取得する場合にのみ可能です。
したがって、ある程度のオーバーヘッドがある場合にのみ可能です。
しかし、 PyPyプロジェクトの RPython があります。これは Python 言語の制限されたサブセットです (もはや動的に型付けされておらず、Python の標準ライブラリのほとんどのモジュールが欠けています)。RPython プログラムはマシン コードに変換できます (私の知る限り、中間コードとして C コードを生成します)。
Python 自体は、仮想マシンの中間コードを生成します。このコードを確認したい場合は、Python 標準ライブラリのdisモジュールを使用してください。これにより、Python 関数のアセンブリのような表現が生成されます。「実際の」マイクロプロセッサはこれを使用できず、使用している Python のバージョンによって結果が変わる可能性があることに注意してください。