インタプリタとは

プログラム言語からマシン語に一行ずつ変換しながら処理することを言います。

pythonの

print("Hello, World!")

が最終的には

10110000 00000001 ; mov eax, 4
10110001 00000001 ; mov ebx, 1
10110010 00000010 ; mov ecx, msg
10110011 00001101 ; mov edx, 13
11001111 10001000 ; int 0x80

このような形になります。

変換されるまでの流れ

Python → バイトコードへコンパイル

PythonでHello World!と表示するコードです。これがまずはバイトコードという形に変換されます。

Pythonコード

print("Hello, World!")

バイトコード

  1           0 LOAD_NAME                0 (print)
              2 LOAD_CONST               0 ('Hello, World!')
              4 CALL_FUNCTION            1
              6 RETURN_VALUE

バイトコードはPython仮想マシン(PVM)で実行されます。

PVM → OSシステムコール → カーネル

そしてバイトコードがPVMで実行されるとOSのシステムコールが実行されこれをカーネルが処理します。

システムコール → CPU | カーネル → CPU

この処理の段階ではCPUが動作するためにマシン語で命令が送られます。

以下は前述のHello World!をマシン語に変換したものです。

10110000 00000001 ; mov eax, 4
10110001 00000001 ; mov ebx, 1
10110010 00000010 ; mov ecx, msg
10110011 00001101 ; mov edx, 13
11001111 10001000 ; int 0x80

投稿日

カテゴリー:

投稿者:

タグ:

コメント

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

CAPTCHA


日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)