2019-2020-1 20199321作品の第2週の「Linuxカーネルの原理と分析」

最初の部分の基礎

構成レジスタ

例として、16を登録する8086 CPUは、3つのカテゴリに分類することができます。

汎用レジスタ

データレジスタ:AX(アキュムレータ)、BX(ベースアドレスレジスタ)、CX(カウンタレジスタ)、DX(データレジスタ)。使用される二つの別個の8ビットレジスタとして利用できます。
ポインタレジスタ:SP(スタック・ポインタ・レジスタ)、BP(ベースポインタレジスタ)
インデックスレジスタ:SI(ソースインデックスレジスタ)、DI(インデックスレジスタオブジェクト)

コントロールレジスタ

IP(命令ポインタレジスタ)、FLAG(フラグレジスタ)

セグメントレジスタ

CS(コード・セグメント・レジスタ)、DS(データ・セグメント・レジスタ)、SS(スタック・セグメント・レジスタ)、ES(余分なセグメント・レジスタ)

R.の先頭に付加されるように、64ビットでは、32ビットで、通常Eの開始時に添加し

一般的なアセンブリ命令

Bは、最後の16ビット、32ビットの最後のビットを指すあるが、L wは、qが最後の64ビットであることを意味し、最後の手段8である
「を参照するように前後に」
レジスタアドレッシング:MOVL%EAX、%EDX;
即時シークアドレス:$ 0x123をMOVLは、%EDX;
アドレッシング指示:MOVL 0x123、%EDX;
間接アドレッシング:MOVL(%eaxに)、% ; EDX
:MOVL 4(%eaxに)、インデックス付けアドレッシング (;%EDX 同じアドレスでプラス4)

。MOVL EAXの%(%ESP); PUSHL%eaxレジスタ$ 4は、ESP%SUBLを対応
POPL%以下のEAXはMOVL(ESP%)に対応するが、%eaxには 、$ 4 SUBL、%ESP。

実験の概要の第二部

:印刷中Wqとコマンド「ESC」を入力します。注意してくださいグラム/ .S * /入力

実験的解析

、同等のEBPの%MOVL、ESP%の機能スタックを取り消すための指示を残して、EBP POPL%;
、同等のPUSHLの場合%ebp機能スタックを取り消すための指示を入力します。MOVL%のesp、 %のEBP;

コードの意味が何であるかを理解するためには、まずESP、EBP、EIPレジスタは理解するC言語の学習にスタックの理解と組み合わせ、記憶されるべきかを知る必要があります。

おすすめ

転載: www.cnblogs.com/20199321zjy/p/11531377.html