低レイヤ– tag –
-
C言語で作る小さなシステム
【低レイヤ入門】C言語で自作VMに入力系SYSCALLを追加して、1文字echoを動かす | UNIX Cafe
前回は、小さな自作VMを、少しだけ「本物のVM」らしい形に近づけました。 これまでは、実行対象の命令列を notes/vm.c 内に直接記述していました。単一の命令動作を確認する段階ではこの手法が有用でしたが、命令列を変更するたびにVM自体のソースコードを... -
C言語で作る小さなシステム
【低レイヤ入門】C言語で自作VMに外部バイナリローダーを追加して hello.bin を実行する | UNIX Cafe
前回は、小さな自作VMにADD、SUB、CMP、JUMP、JZ、JNZ、CALLI、RETといった命令を追加しました。 これにより、VMはただ上から順番に命令を処理するだけでなく、CMP の結果に応じた条件分岐(ジャンプ)や、CALLI と RET によるサブルーチン呼び出しができ... -
C言語で作る小さなシステム
【低レイヤ入門】ドリフの散髪屋コントで見切るマルチタスクと仮想メモリの正体 | UNIX Cafe
OSやCPUの資料を読んでいると、最初に引っかかる不思議な部分があります。 タスク1も、タスク2も、タスク3も、みんな平然と同じようなアドレスを使って動いていることです。たとえば、どのプログラムも「自分のプログラムの先頭は 0x00000 です」という顔... -
C言語で作る小さなシステム
【低レイヤ入門】C言語で自作VMに計算・比較・分岐・CALL/RETを追加する | UNIX Cafe
前回は、小さな自作VMにSTDI、INC、DEC、MOV、PUSH、POPを追加しました。 値をメモリへ書く、レジスタ同士でコピーする、スタックへ退避する、というところまで進みました。 ただし、この段階のVMは、まだ基本的には上から順番に命令を実行するだけです。 ... -
C言語で作る小さなシステム
C言語のsigned/unsignedをアセンブラで見る|charの範囲と2の補数の仕組み | UNIX Cafe
この記事では、C言語の signed と unsigned の違い、signed char が -128 〜 127 になる理由、そして unsigned int に -1 を渡すと何が起きるのかを、実際のアセンブラ出力を見ながら確認します。 Introduction プログラミングの教科書を開くと、最初の方...
1
