Asemble

戻る

目次


ニーモニック一覧

ニーモニック戻値の場所説明略称の元名
ksamd64.incprologやepilogで利用するマクロが入っているファイル
include ファイル名ファイルを読み込む
mov dest,srcdestデスティネーションにソースを代入(コピー)move
_TEXT segmentソースファイルの最初に書く
_TEXT ends \n endソースファイルの最後に書く
align 数字関数の先頭アドレスを16バイト境界にそろえる(関数呼び出しのオーバーヘッドを低減できる)
関数名 proc関数の初め
関数名 proc frame関数の初め(prologを利用する場合の関数の初めの記述)
関数名 endp関数の終わり
[レジスタ]レジスタの値が指すアドレスの中身を示す(ほぼほぼポインタで利用する?)
[レジスタ+n(byte)]レジスタのアドレスをnバイト進めたアドレスの中身を指す
メモリサイズ ptrメモリのサイズを指定しレジスタを指定する
ret呼出もとへ戻るreturn
public 関数名関数の定義
add dest,srcdestデスティネーションにソースを加算add
addsd dest,srcdestデスティネーションにソースを加算(double,float)
sub dest,srcdestデスティネーションからソースを減算subtract
imul srcrax系符号付き乗算。RAX系のレジスタにソースオペランドの値を乗算しRAXに結果を格納Multiplication
imul dest,srcdest符号付き乗算。デスティネーションにソースを乗算
imul dest,src1,src2rax系符号付き乗算。ソース1とソース2を乗算しデスティネーションに結果を格納
idiv srcraxとrdx系被序数はEDX:EAX,DX:AX,AXでsrcで除算する。結果は被序数と同じレジスタ。剰余はRDX系Division
inc destdestをインクリメントするincrement
dec destdestをデクリメントするdecrement
and dest srcdestとsrcの論理積、結果はdestへ保存
or dest srcdestとsrcの論理和、結果はdestへ保存
xor dest srcdestとsrcの排他的論理和、結果はdestへ保存
sar dest,countcountで指定した桁だけdestを右シフト
sal dest,countcountで指定した桁だけdestを左シフト
shl dest,countcountで指定した桁だけdestを左シフト(Unsigned)
shr dest,countcountで指定した桁だけdestを右シフト(Unsigned)
rol dest,countビットを左回転させる
ror dest,countビットを右回転させる
stcCFフラグをセットする
clcCFフラグをクリアする
jmp destラベルまでジャンプする
jne destZFフラグが0の時destのメモリロケーションへ制御を以降する。(src1 != src2)
cmp src1,src2src2からsrc1を引き結果が0ならZFを1に桁上がりが生じたらCFフラグを1にする。
stdDFフラグをセットする
cldDFフラグをクリアする
jl destSFが変わらずOFフラグが0の時destまでジャンプ。Signedとして扱う(src1 < src2)
jg destsrc1 > src2
jb destCFフラグが0の時destまでジャンプ。UnSignedとして扱う(src1 < src2)
ja destCFフラグが1の時destまでジャンプ。UnSiegnedとして扱う(src1 > src2)
jz destZFフラグが1の時destまでジャンプ。(src1 = src2)jumpzero
jnz destsrc1 != src2jumpnotzero
jbe destunsigned(src1 <= src2)
jae destunsigned(src1 >= src2)
jle destsigned(src1 <= src2)
jge destsigned(src1 >= src2)
loop destecx,rcxの値をカウンタとしてループ操作を実行する。戻先はdest
lea dest srcsrcのメモリアドレスをdestへ移す
rex_push_reg destdestを
prolog
.endprologprologの終わりを示す
pop destdestをポップする。
push destRSPレジスタの値を8だけ減らし、RSPレジスタが指すメモリ領域にdestの値を書き込む。
hltCPUを省電力モードに切り替える
stiCPUのIFフラグ(割り込み)を1にする。割り込みを許可するSetInterruptFlag
cliCPUのIFフラグ(割り込み)を0にする。割り込み禁止にするClearInterruptFlag
lgdt destGDTRへ[GDTのバイト数-1(16bit)]、[GDTの先頭アドレス(64bit)]を書き込む。

値のサイズ(メモリサイズ)

表記意味
word2byte
dword4byte
qword8byte
トップへ戻る

CPUレジスタ

汎用レジスタ(GPR)
名称64bit32bit16bit上位8bit下位8bit
汎用レジスタ
アキュムレータレジスタRAXEAXAXAHAL
ベースレジスタRBXEBXBXBHBL
カウントレジスタRCXECXCXCHCL
データレジスタRDXEDXDXDHDL
インデックスレジスタ
ソースインデックスRSIESI
デスティネーションインデックスRDIEDI
特殊レジスタ
ベースポインタRBPEBPBP
スタックポインタRSPESPSP
インストラクションポインタRIPEIPIP
セグメントレジスタ
コードセグメントRCSECSCS
データセグメントRDSEDSDS
エクストラセグメントRESEESES
スタックセグメントRSSESSSS
R8R8DR8WR8B
R9R9DR9WR9B
R10R10DR10WR10B
R11R11DR11WR11B
R12R12DR12WR12B
R13R13DR13WR13B
R14R14DR14WR14B
R15R15DR15WR15B
壊してはいけないレジスタ
EFLAGSレジスタ(全32bit)
キャリーフラグCF0bit足し算で繰上りが起こる場合、引き算して繰り下がりが起こらない場合、
未使用1bit
パリティフラグPF2bit値の最下位バイト(8bit)に1が偶数個あるときセットされ、奇数個の場合はクリアされる
未使用3bit
調整フラグAF4bit2進化10進演算(BCD)で使用されるキャリーフラグ。
未使用5bit
ゼロフラグZF6bit結果がゼロの場合にセットされゼロでない場合はクリアされる
符号フラグSF7bit符号付き整数の符号ビットと同じ値にセットされる
トラップ、トレースフラグTF8bit
割り込みフラグIF9bit1で割込み許可、0で割込み拒否。ブートローダが開始してからgBS-<ExitBootServices()が呼ばれるまでは1。
方向フラグDF10bitストリング命令(MOVS、CMPS、SCAS、LODS、STOS)を制御する。
オーバーフローフラグOF11bitオーバフロー時(デスティネーションオペランドに収まらない場合)にセットされる
I/O特権レベルIOPL12bit
I/O特権レベルIOPL13bit
ネストタスクフラグNT14bit
未使用15bit
デバッグレジスター命令ブレイクポイントを(1回のみ)無効にするRF16bit
1=仮想86モードVM17bit
変更可能であればi486 Pentium以降のCPUAC18bit
仮想割り込みフラグ(Pentium以降)VIF19bit
仮想割り込みペンディングフラグ(Pentium以降)VIP20bit
変更可能であればCPUID命令に対応しているID21bit
未使用22~31bit
SIMDレジスタ
名称128bit
XMM0第一引数、返却値(実数型float:下位32bit.double:下位64bit)
XMM1第二引数
XMM2第三引数
XMM3第四引数
XMM4
XMM5
XMM6
XMM7
XMM8
XMM9
XMM10
XMM11
XMM12
XMM13
XMM14
XMM15
プログラムカウンタ
メモリアドレスレジスタ
命令レジスタ
デコーダ
ALU
制御回路

汎用レジスタ(GPR)
日本語名レジスタSystem V AMD64 ABI の用途Microsoft x64 ABI の用途
アキュムレータRAX戻り値・caller-saved・乗算/除算の暗黙オペランド戻り値・caller-saved
ベースレジスタRBXcallee-savedcallee-saved
カウンタRCX第4整数引数・caller-saved第1整数引数・caller-saved
データRDX第3整数引数・caller-saved第2整数引数・caller-saved
ソースRSI第2整数引数・caller-saved・文字列命令sourcecallee-saved・文字列命令source
デスティネーションRDI第1整数引数・caller-saved・文字列命令destcallee-saved・文字列命令dest
ベースポインタRBPcallee-saved・フレームポインタcallee-saved・フレームポインタ
スタックポインタRSPスタックポインタスタックポインタ
拡張レジスタR8第5整数引数・caller-saved第3整数引数・caller-saved
拡張レジスタR9第6整数引数・caller-saved第4整数引数・caller-saved
一時レジスタR10caller-saved・システムコール用caller-saved
一時レジスタR11caller-savedcaller-saved
拡張ベースR12callee-savedcallee-saved
拡張ベースR13callee-savedcallee-saved
拡張ベースR14callee-savedcallee-saved
拡張ベースR15callee-savedcallee-saved
命令ポインタ / フラグ
命令ポインタRIP命令アドレス命令アドレス
フラグレジスタRFLAGS条件フラグ・制御フラグ条件フラグ・制御フラグ
SIMD レジスタ(XMM / YMM / ZMM)
SSE レジスタXMM0浮動小数点第1引数・戻り値浮動小数点第1引数・戻り値
SSE レジスタXMM1浮動小数点第2引数浮動小数点第2引数
SSE レジスタXMM2浮動小数点第3引数浮動小数点第3引数
SSE レジスタXMM3浮動小数点第4引数浮動小数点第4引数
SSE レジスタXMM4浮動小数点第5引数引数に使用しない
SSE レジスタXMM5浮動小数点第6引数引数に使用しない
SSE レジスタXMM6浮動小数点第7引数引数に使用しない
SSE レジスタXMM7浮動小数点第8引数引数に使用しない
SSE レジスタXMM8–XMM15caller-savedcaller-saved
FPU(x87)レジスタ
制御ワードFCWx87 FPU Control Word共通
ステータスワードFSWx87 FPU Status Word共通
タグワードFTWx87 FPU Tag Word共通
FPU レジスタFPR0〜FPR7x87 ST0〜ST7共通
デバッグレジスタ(DR)
ブレークポイントDR0〜DR3ブレークポイントアドレス共通
デバッグステータスDR6デバッグステータス共通
デバッグ制御DR7デバッグ制御共通
システムレジスタ(CR / MSR / 特権)
特権レベルCPLCurrent Privilege Level共通
命令禁止IIInstruction Inhibit共通
A20 ラインA20A20 ライン状態共通
SMM 状態SMMSystem Management Mode共通
HLT 状態HLTHLT 状態共通
EFEREFERLong mode 有効化など共通
セグメント / TSS / LDT
LDT レジスタLDTLocal Descriptor Table共通
タスクレジスタTRTask Register(TSS セレクタ)共通
セグメントCS/SS/DS/ESセグメント(64bit では固定)共通
TLS ベースFS/GSTLS・カーネル構造体参照共通

関数呼び出し時の引数と返却値

引数と返却値
Microsoft Learn
引数整数型・ポインタ
Microsoft x64 ABISystem V AMD64 ABI
第一引数RCXRDI
第二引数RDXRSI
第三引数R8RDX
第四引数R9RCX
第五引数RSP+40R8
第六引数RSP+48R9
第n引数RSP+(n*8)
関数呼出元スタックポインタ
RBP

返却値
値型レジスタ
整数型RAX
charAL
short(word)AX
int(dword)EAX
ポインタ(qword)RAX
実数型XMM0
floatなどXMM0の下位32bit
doubleなどXMM0の下位64bit
トップへ戻る

回路

論理回路(MIL記号)
図記号名称論理値
論理積素子(AND)
ABY
000
100
010
111
否定論理積素子(NAND)
ABY
001
101
011
110
論理和素子(OR)
ABY
000
101
011
111
否定論理和素子(NOR)
ABY
001
100
010
110
排他的論理和素子(XOR)
ABY
000
101
011
110
論理一致素子
ABY
001
100
010
111
バッファ
ABY
00
10
01
11
否定論理素子(NOT)
XY
01
10
スリーステートバッファ
A制御Y
000
100
010
111
素子、回路入力部又は出力部の〇は、
論理状態の反転又は否定を表す。

トップへ戻る

Architecture


トップへ戻る

プログラムの実行単位

メモリの割り当て

CPU命令実行手順


トップへ戻る

ハード関連

ファームウェア

ファームウェアコンピュータや電子機器などに内蔵され本体内部の回路や装置などの基本的な制御をつかさどる
UEFI(Unifed Extensible Firmware interface)ファームウェアとオペレーティングシステムの間の通信仕様を定めた基準規格
BIOS(Basic Input Output System)起動時のOSの読み込みや接続機器との基本的な入出力制御を行う

ファイルの形式

ファイルの形式
FAT旧FAT16 新FAT32,exFATの二種類。ハードディスクやUSBメモリにデータを記録する方式(フォーマット形式)ファイルアロケーションテーブルを使って参照しファイルを読み書きする。
NTFS電源遮断等不測事態に対応するデータ回復機能、ファイル単位でのアクセス権設定、暗号化、圧縮などの機能がある。FATと互換性はない。NTFSでフォーマットしないとWinVista以降のOSはインストールできない。
UDF光ディスク用のフォーマットの一つ、DVDやCD-RWなどで使われる

ファイルの属性

ファイルの属性
アーカイブ属性バックアップを取る際の目印、バックアップのときチェックがあるファイルの増分をバックアップするようになる。
インデックス属性検索しやすくするための目印インデックスサービスを起動していると自動でデータベースを作成し、それによって検索が早くなる

メモリ

名称説明
スタティックランダムアクセスメモリ(SRAM)データが6つのトランジスタメモリセルの状態を使用して格納される。速度が速く容量が小さい。CPUのキャッシュメモリとして利用される。
ダイナミックランダムアクセスメモリ(DRAM)俗に取り換え可能なPCメモリ。揮発性メモリー。
エラー訂正コード(ECC)DRAMの一種。エラーを検知して修正する追加セルを備えている。交換の際はパソコンの他のハードウェアとの互換性の確保をする必要がある。
転送速度-DDR
名称
シンクロナイイズダイナミックランダムアクセスメモリ(SDRAM)コンポーネントの速度向上に対応して開発。メモリモジュールの応答性をシステムバスと同期する。
シングルデータレート(SDR)
ダブルデータレート(DDR)SDRに比べて高速でエネルギー消費量が低い。
DDR2
DDR3
DDR4
DDR5

パソコンハード用語

パソコンハード用語
LSI(Large-Scale Integration)大規模集積回路(ICの内阻止の集積度が数千ゲート以上のもの)。
A/D変換アナログ電気信号をデジタル電気信号に変換する電子回路。
MMU(Memory Management Unit)メモリ管理ユニット。CPUの要求するメモリアクセスを処理する。仮想メモリを用いる場合の論理アドレスと物理アドレスの変換に使用される
SIMD同時に複数のデータを演算する際のデータ。同時処理の命令を実行した後は結合されていて、処理完了後に分解される。
NVMeコンピュータにストレージ(外部記憶装置)を接続するための通信規格の一つでSSDを接続するためのもの。
ネットワーク関連
ISA(Instruction Set Architecture)マイクロアーキテクチャに各種命令を構築したもの、その仕様
マイクロアーキテクチャインターフェースの実装方法
コンピュータ・アーキテクチャコンピュータごとのインターフェースの違い

トップへ戻る