アセンブリ言語 【assembly language】
アセンブリ言語とは、プログラミング言語の類型の一つで、コンピュータのCPU(MPU/マイクロプロセッサ)が直接解釈・実行できる機械語(マシン語)と正確に対応する命令語で構成された言語。
アセンブリ言語は、機械語と命令語で構成された言語。
用語 | 意味 |
---|---|
アセンブリ | 言語の呼び名 |
アセンブラ | アセンブリをコンパイルするプログラム |
アセンブル | アセンブリをコンパイルすること |
アセンブリを、アセンブルして、アセンブラを作る
機械語 【machine language】 マシン語 / machine code
機械語とは、コンピュータのマイクロプロセッサ(CPU/MPU)が直接解釈・実行できる命令コードの体系。0と1を並べたビット列として表され、人間が直に読み書きしやすい形式ではない。
オペコード 【opcode】 operation code
オペコードとは、マイクロプロセッサ(CPU/MPU)に与える機械語の命令の識別番号。そのプロセッサの命令の体系を定義する「命令セットアーキテクチャ」(ISA:Instruction Set Architecture)で定められている。
オペコードの例
00000001 0001 0010
ニーモニック 【mnemonic】
ニーモニックとは、コンピュータのマイクロプロセッサ(CPU/MPU)に与える命令の種類を表す番号(オペコード)に、人間が分かりやすいように付けられた英数字の短い符号。
アセンブラ言語を動かすには for Mac
アセンブリ言語ようのコンパイラnasm
を使用して、自分の実行環境に合わせて、コンパイルする。
nasm -f macho64 test.s
自分の実行環境の調べ方
自分のハードウェアの名前を以下コマンドで出力する。
uname -m
nasmが対応するフォーマットの一覧
$ nasm -h
-f format select output file format
bin Flat raw binary (MS-DOS, embedded, ...) [default]
ith Intel Hex encoded flat binary
srec Motorola S-records encoded flat binary
aout Linux a.out
aoutb NetBSD/FreeBSD a.out
coff COFF (i386) (DJGPP, some Unix variants)
elf32 ELF32 (i386) (Linux, most Unix variants)
elf64 ELF64 (x86-64) (Linux, most Unix variants)
elfx32 ELFx32 (ELF32 for x86-64) (Linux)
as86 as86 (bin86/dev86 toolchain)
obj Intel/Microsoft OMF (MS-DOS, OS/2, Win16)
win32 Microsoft extended COFF for Win32 (i386)
win64 Microsoft extended COFF for Win64 (x86-64)
ieee IEEE-695 (LADsoft variant) object file format
macho32 Mach-O i386 (Mach, including MacOS X and variants)
macho64 Mach-O x86-64 (Mach, including MacOS X and variants)
dbg Trace of all info passed to output stage
elf Legacy alias for "elf32"
macho Legacy alias for "macho32"
win Legacy alias for "win32"
AMD64 【x86-64】 x64
AMD64とは、米AMD社が開発したマイクロプロセッサ(CPU/MPU)の64ビット命令セットで、32ビットのx86系命令セットとの互換性を維持したまま64ビットコードの実行を可能にしたもの。