esvm0005
をテンプレートにして作成
[
トップ
] [
新規
|
一覧
|
単語検索
|
最終更新
|
ヘルプ
]
開始行:
* ES-VMバイトコード用のコンパイラ #1
-(by [[K]], 2020.06.29)
** (1)
-最初にWindows用、x86(32bit)用のコンパイラをできるだけ手...
-性能はそれなりにしかならないけど、でもとにかく早く作れる。
-そして後日、本気でまともなやつを作ればいい。
-まず原則として、コンパイラの中で方針が一貫していれば、他...
** (2)
-関数呼び出し規約など
--evdecl
---esvm間で普通に用いられる呼び出し規約(コンパイラで決め...
---基本としてはreturn値以外は一切の実レジスタを破壊しない...
---return値が一つの実レジスタで表現できないビット幅の場合...
--cdecl_w32
---Windowsのx86(32bit)の標準的な呼び出し規約に準ずる
** (3) サンプルコード
-chars
evdecl void chars()
{
int8 i;
i = 0x20;
lp:
putchar(i);
i++;
if (i != 0x7f) goto lp;
return;
}
// バイトコードで書くと・・・
[01(func-simple)] [17 00 2c] [01] [05 f00 00] [14 00 21]...
[1] 970bc 1 5ef000 940a1 a10af0 [bf(ret)] : (hh4a)中身は...
** (4) 進捗
-[2020.07.13]
--(1)とりあえずcharsのバイトコードをx86(32bit)の機械語に...
--(2)同じくx86(64bit)の機械語にコンパイルしてJIT実行でき...
--(3)さらにDOSのCOMファイルを出力することもできるようにな...
-[2020.07.14]
--(1)ES-VMバイトコードから「はりぼてOS」の.hrbファイルを...
終了行:
* ES-VMバイトコード用のコンパイラ #1
-(by [[K]], 2020.06.29)
** (1)
-最初にWindows用、x86(32bit)用のコンパイラをできるだけ手...
-性能はそれなりにしかならないけど、でもとにかく早く作れる。
-そして後日、本気でまともなやつを作ればいい。
-まず原則として、コンパイラの中で方針が一貫していれば、他...
** (2)
-関数呼び出し規約など
--evdecl
---esvm間で普通に用いられる呼び出し規約(コンパイラで決め...
---基本としてはreturn値以外は一切の実レジスタを破壊しない...
---return値が一つの実レジスタで表現できないビット幅の場合...
--cdecl_w32
---Windowsのx86(32bit)の標準的な呼び出し規約に準ずる
** (3) サンプルコード
-chars
evdecl void chars()
{
int8 i;
i = 0x20;
lp:
putchar(i);
i++;
if (i != 0x7f) goto lp;
return;
}
// バイトコードで書くと・・・
[01(func-simple)] [17 00 2c] [01] [05 f00 00] [14 00 21]...
[1] 970bc 1 5ef000 940a1 a10af0 [bf(ret)] : (hh4a)中身は...
** (4) 進捗
-[2020.07.13]
--(1)とりあえずcharsのバイトコードをx86(32bit)の機械語に...
--(2)同じくx86(64bit)の機械語にコンパイルしてJIT実行でき...
--(3)さらにDOSのCOMファイルを出力することもできるようにな...
-[2020.07.14]
--(1)ES-VMバイトコードから「はりぼてOS」の.hrbファイルを...
ページ名: