Riverside Learning LABO(Skill/Idea/Code)

よりよいシステムのため工学系と人間系の学習下書きメモ

プログラムはなぜ動くのか(2)

プログラムはなぜ動くのか(2)
著者:矢沢久雄

memo続き。
cache,,,隠し場所
1つのプログラムを複数ページに
メモリ節約1:DLL
メモリ節約2:_stdcall
たった1文字でも1クラスタ使用
ファイルにはバイト単位で記録
データ×繰り返し:ランレングス法
モールス:ハフマン法
動作環境=OS+ハードウェア
CPUの種類違えばマシン語異なる
Ports:ソースをハードにあったものに
BIOS:ブートストラップローダ起動
コンパイラ特定
言語、対象CPU、対象OS
インポート・ライブラリ
ダイナミック・リンク・ライブラリ
→ダイナミック・リンク
メモリ上領域:変数、関数、スタック、ヒープ
OS:制御PG、言語プロセッサ、ユーティリティ
システムコールでハードウェア制御
windows:32bit、Win32API、GUI、WYSUWYG
windows:マルチタスク、NW、DB、プラグ&プレイ
ニーモニック(ネイティブコード英字略称)
アセンブリ言語オペコードと擬似命令
アセンブラ、逆アセンブラ
スタック:干草を積んだ山
関数の引数はスタックで戻り値はレジスタ
jl short @4:より小さなら@4へ
mov eax,dword ptr [_counter]:counterの値をeaxレジスタに4バイト読み込む
add eax,eax:二倍する
mov dword ptr [_counter],eax:戻す