プログラム言語からマシン語に一行ずつ変換しながら処理することを言います。
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
コメントを残す