ASM
読んだ。 本書では、WATという人が読み書きしやすいテキストフォーマットを通して、WebAssemblyを解説している。 実務でWATを直接書くのは想像できないので、教養的な位置付けになるかと思っていたが、結構よかったと思う。 ちなみに、8章で、衝突判定をwasm…
アセンブラ 定義EQU 0x0A ラインフィード(LF)、カーソルを一行下げる 0x0D キャリッジリターン(CR)、カーソルを左端に戻す 基数のPrefix 0b00 2進数 0o00 4進数 0d00 8進数 0x00 16進数 データ定義 DB: Define Byte, 1byte DW: Define Word, 2byte DD: Defin…
OS自作用のメモ。 エンディアン x86_64はリトルエンディアン 汎用レジスタ x86_64の汎用レジスタは次の16個 RAX RBX RCX RDX RBP RSI RDI RSP R8 R9 R10 R11 R12 R13 R14 R15 バイト数の異なる別名(p.71) 64bit 32bit 16bit 8bit RAX EAX AX AH, AL RBX EB…
Rui先生の低レイヤを知りたい人のためのCコンパイラ作成入門を参考に作成していたCコンパイラ、Hello, Worldできたら結構満足して休憩していたけど、再開してなんとかセルフホストまでたどり着いた。 いつセルフホストできるようになるのかは全然わからなく…
書けるようになったので、記念に書いておく。 .intel_syntax noprefix .data .LC0: .string "Hello, World!\n" .text .global main main: push rbp mov rbp, rsp lea rdi, .LC0[rip] mov rax, 0 call printf@PLT mov rax, 0 mov rsp, rbp pop rbp ret
よくわかってなくてだいぶはまったが、やっとわかったのでまとめておく。 x86_64のCPUを前提とする。 64bitレジスタでのキャストと32bitレジスタ 64bitレジスタで符号拡張するキャスト 符号拡張するキャストというのは、要はsigned型へのキャストすること。 …
アセンブラ、調べてもすぐ忘れるのでまとめる。 intelシンタックスで、 -pieか-no-pieかでだいぶ違うみたいだが、以下は最近主流の-pieを前提とする。 セッション アセンブリプログラムは、複数のセッションで構成される。 グローバル変数の配置を理解するに…