アセンブリの勉強
- Assembly 100%
| Filename | Latest commit message | Latest commit date |
|---|---|---|
| .vscode | ||
| step1 | ||
| step2 | ||
| .gitignore | ||
| README.md | ||
Learn_Assembly
アセンブリ言語(x86-64 / NASM)を一から学ぶための学習用リポジトリです。
各Stepごとに、
- アセンブリソース (
stepX.asm) - 自分で考えた内容 (
stepX.md) - AIによる解説
を残しながら、少しずつ低レベルプログラミングを学習していきます。
学習環境
現在の環境
- OS: Ubuntu 26.04 LTS
- CPU: x86-64 (AMD Ryzen)
- アセンブラ: NASM
- リンカ: GNU ld
- デバッガ: GDB
- エディタ: Visual Studio Code
必要なソフトウェア
Ubuntuの場合
sudo apt update
sudo apt install \
nasm \
binutils \
gdb \
strace \
gcc \
make
VS Codeを使用する場合は、以下の拡張機能がおすすめです。
- x86 and x86_64 Assembly
- Hex Editor (Microsoft)
- Error Lens(任意)
ビルド
mkdir -p build
nasm -f elf64 -g -F dwarf step1.asm -o build/step1.o
ld build/step1.o -o build/step1
-
-g- デバッグ情報を付与
-
-F dwarf- GDBで利用できるDWARF形式のデバッグ情報を生成
実行
./step1
終了コードの確認
echo $?
デバッグ
gdb ./step1
Intel記法で表示する場合
set disassembly-flavor intel
便利なコマンド
逆アセンブル
objdump -d -Mintel step1
ELFヘッダ
readelf -h step1
セクション一覧
readelf -S step1
システムコールの確認
strace ./step1
ディレクトリ構成(予定)
Learn_Assembly/
│
├── README.md
├── .gitignore
│
├── Step01/
│ ├── step1.asm
│ └── step1.md
│
├── Step02/
│ ├── step2.asm
│ └── step2.md
│
└── ...
このリポジトリについて
このリポジトリは、完成したコードを集めることよりも、
- 自分で考える
- 実際に動かす
- バイナリを確認する
- ELFやシステムコールの動きを理解する
ことを目的としています。
学習途中のメモや考察も積極的に残し、後から振り返られる教材として管理します。