目次
(1) ダイレクトアドレッシング(即時アドレッシングとは異なります - 2回)
(2) 間接アドレス指定 (便利 - プログラミング - n 回)
(4) レジスタ間接アドレッシング (高速 - 間接アドレッシングの場合 - 2 回)
(1) ベース アドレッシング (ベース アドレス + オフセット - オペレーティング システムの場合)
(2) インデックス付きアドレッシング (ループ構造 - プログラマ向け)
(6) スタック アドレッシング (ソフトウェアとハードウェアの両方の実装 - ポップ & プッシュ)
第 4 章 - コマンドシステム
CPU設計者は、アセンブリ言語で使用および呼び出しするための一連の機械命令を定義および実装します。
機械語命令は、コンピュータ ハードウェアが直接理解して実行する命令であり、バイナリ形式で表現され、特定の操作や機能に対応します。
1. コマンド形式
(1) 命令(機械語命令 - 2進数)
(2) 命令の分類(アドレスコードの数による)
(3) 命令の分類(長さによる分類)
マシンワード長: CPU が一度に処理できるビット数。(16、32、64ビット)x32、x64
したがって、命令がダブルワード命令の場合、CPU は命令を 2 回読み取る必要があります。
(4) 命令の分類(動作の種類による)
(5) まとめ
2. 拡張オペコード
(1) オペレーションコード展開方法(注意事項)
(2) 演習(拡張オペコード)
(3) まとめ
3. 命令アドレッシング(シーケンス、ジャンプ)
シーケンシャルアドレッシング:
[命令長]と[メインメモリのアドレス指定方法]に応じてカウント(PCプログラム数)
つまり、累積ステップは[命令長]と[メインメモリのアドレス指定方法]の比率で決まります。
PCの値- 次に実行される命令を指します。(対応する数のコード行を実行できるようにするのと同じです!)
アドレス指定をスキップします:
順番に検索していくと、関数や(goto文)に出会ったら、該当するコード行にジャンプします!
これも似ていますね!, Jump 文に遭遇したら、指定された位置にジャンプします。!!
固定長命令
可変長命令
(1) 概要
4. データのアドレス指定
(1) ダイレクトアドレッシング(即時アドレッシングとは異なります - 2回)
直接: メインメモリに直接アクセスして見つけます。
直ちに: アドレス コード = オペランド - 直接使用してください。
(2) 間接アドレス指定 (便利 - プログラミング - n 回)
(3) レジスタアドレッシング (高速 - 1 回)
(4) レジスタ間接アドレッシング (高速 - 間接アドレッシングの場合 - 2 回)
(5) 暗黙的なアドレッシング
(6) 即時アドレス指定
(7) まとめ
5. データアドレッシング(オフセットアドレッシング)
(1) ベース アドレッシング (ベース アドレス + オフセット - オペレーティング システムの場合)
どのレジスタにベース アドレスが格納されているかを示すためにビットを使用することを忘れないでください。!!
利点: メモリに格納されるため、オフセットはベース アドレスに基づいて計算される (相対的と同等) ため、プログラムが並行して実行される場合、命令の格納場所が変更されても、命令を変更する必要はありません。
欠点:ベース アドレッシングでは、ベース アドレスの値を保存するために特定のレジスタが必要であり、命令の実行時にベース アドレスとオフセットの計算が必要です。これにより、追加のオーバーヘッドが発生します。
(2) インデックス付きアドレッシング (ループ構造 - プログラマ向け)
(3) 相対アドレッシング(ジャンプジャンプに便利!)
注: プログラムセグメントが変更されると、プログラムが指すオペランドも変更されますか?
最適化方法:データセグメントとプログラムセグメントを分離!このようにして、プログラムセグメントが変更されても、ポイントされるデータの位置は変更されません。
(4) まとめ
(5) ハードウェア - コンパレータ
(6) スタック アドレッシング (ソフトウェアとハードウェアの両方の実装 - ポップ & プッシュ)
6. アセンブリ言語
(1) メモリの読み書き長を指定する
(2) 登録
(3) コマンド説明
(4) X86 組み立て説明書
(5) AT&TフォーマットとIntelフォーマット