0から作るソフトウェア開発

日々勉強中。。。

0から作るOS開発

環境準備

環境設定

ブートローダ

カーネルローダ

GRUB

カーネル

ドライバーその他

Tips IA32(x86)汎用命令一覧 Lから始まる命令 LEA命令

IA32(x86)汎用命令一覧

このサイトで挙げる命令は汎用命令の一覧となります

調べたい命令の頭文字をクリックすると、表の下に詳細が表示されます
IA32(x86)汎用命令一覧
A B C D E F G H
I J K L M N O P
Q R S T U V W X
Y Z 補足


Lから始まる命令

クリックすると、表の下に詳細が表示されます
Lから始まる命令一覧
命令 代表命令の説明
(英語)
代表命令の説明
(日本語)
LAHF Load Flags into AH Register FLAGSレジスタの値をAHレジスタにロードする
LAR Load Access Rights Byte アクセス権をロードし、ZFフラグをセットする
LDS/LSS/LES/LFS/LGS Load Pointer to DS/SS/ES/FS/GS メモリからポインタをロードする
LEA Load Effective Address 実効アドレスをロードする
LEAVE High Level Procedure Exit SP(ESP)をBP(EBP)にセットし、BPをポップする
LGDT Load Global Descriptor Table Register GDTをロードする
LLDT Load Local Descriptor Table Register LDTをロードする
LIDT Load Interrupt Descriptor Table Register IDTをロードする
LMSW Load Machine Status Word メモリの値をCR0のマシンステータスワードにロードする
LOCK Assert LOCK# Signal Prefix LOCK#信号のアサート
LODS/LODSB/LODSW/LODSD Load String 指定したアドレスの文字列をロードする
LOOP/LOOPE/LOOPZ/LOOPNE/LOOPNZ Loop According to ECX Counter CX(ECX)をカウントとして使用して、ループ操作を実行する
LSL Load Segment Limit 指定したセグメントセレクタが指すセグメントリミットをロードする
LTR Load Task Register TSSをロードする


LEA命令(Load Effective Address)

LEA命令
オペコード 命令 説明
0x8D /r LEA r16, m mの実効アドレスをレジスタr16に格納します
0x8D /r LEA r32, m mの実効アドレスをレジスタr32に格納します


詳細

第2オペランド(読み込み元)の実効アドレスを計算し、第1オペランド(格納先)に格納します

第2オペランド(読み込み元)は、プロセッサのアドレス指定モードの1つで指定されたメモリアドレス(オフセット部)です

第1オペランド(格納先)は、汎用レジスタを指定します。この命令が実行する処理は、下記表のように、

そのアドレスに格納されているデータサイズおよびオペランドのサイズによって変わります。

この命令のオペランドサイズは選択されたレジスタによって決まり、アドレスに格納されているデータサイズは

コードセグメントの属性によって決まります

サイズとLEA命令の処理
オペランドサイズ アドレスに格納されているデータサイズ 実行される処理
16 16 16ビットの実効アドレスが計算され、要求された16ビットレジスタに格納されます
16 32 32ビットの実効アドレスが計算され、そのアドレスの下位16ビットが 要求された16ビットレジスタに格納されます
32 16 16ビットの実効アドレスが計算され、16ビットアドレスはゼロ拡張され、 要求された32ビットレジスタに格納されます
32 32 32ビットの実効アドレスが計算され、要求された32ビットレジスタに格納されます


アセンブラが異なると、第2オペランド(読み込み元)のサイズと記号参照にもとづいて、使用されるアルゴリズムが

変わることもあります

影響のあるEFLAGSレジスタのフラグ

影響のあるEFLAGSレジスタのフラグ
フラグ 説明
ID -
VIP -
VIF -
AC -
VM -
RF -
NT -
IOPL -
OF -
DF -
IF -
TF -
SF -
ZF -
AF -
PF -
CF -


inserted by FC2 system