ASM

入門WebAssemblyの読書メモ

読んだ。 本書では、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…

自作Cコンパイラでセルフホストを達成した。

Rui先生の低レイヤを知りたい人のためのCコンパイラ作成入門を参考に作成していたCコンパイラ、Hello, Worldできたら結構満足して休憩していたけど、再開してなんとかセルフホストまでたどり着いた。 いつセルフホストできるようになるのかは全然わからなく…

アセンブラで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

拡張するキャスト(Intel記法のアセンブラ)

よくわかってなくてだいぶはまったが、やっとわかったのでまとめておく。 x86_64のCPUを前提とする。 64bitレジスタでのキャストと32bitレジスタ 64bitレジスタで符号拡張するキャスト 符号拡張するキャストというのは、要はsigned型へのキャストすること。 …

アセンブラのグローバル変数の定義

アセンブラ、調べてもすぐ忘れるのでまとめる。 intelシンタックスで、 -pieか-no-pieかでだいぶ違うみたいだが、以下は最近主流の-pieを前提とする。 セッション アセンブリプログラムは、複数のセッションで構成される。 グローバル変数の配置を理解するに…