0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

x86CPU の8つの汎用レジスタについてのまとめ

Posted at

この記事について

この記事の対象者

Intel x86 CPU の汎用レジスタについてよくわからない方 or なまえの由来について知りたい方

多少雑な記事かもしれませんがお許しください><

本編?

Intel x86 CPU の汎用レジスタの引用

RAX/EAX/AX/AL/AH : 「アキュムレータレジスタ」と呼ばれる。算術演算操作の結果が格納される。
REX/ECX/CX/CL/CH : 「カウンタレジスタ」と呼ばれる。シフトローテート命令とループ命令に使用される。
RDX/EDX/DX/DL/DH : 「データレジスタ」と呼ばれる。算術演算操作とI/O操作に使用される。
EBX/BX/BL/BH : 「ベースレジスタ」と呼ばれる。セグメントモードでのDS(後述)に格納されたデータを指し示すために使用される。
RSP/ESP/SP : 「スタックポインターレジスタ」と呼ばれる。スタックのトップを指し示すポインタ。
RBP/EBP/BP : 「スタックベースポインタレジスタ」と呼ばれる。スタックのベースを指し示すのに使用される。
RSI/ESI/SI : 「ソースレジスタ」と呼ばれる。ストリーム操作コマンド(たとえば MOV命令)でのソース(入力元)へのポインタとして使用される。
RDI/EDI/DI : 「デスティネーションレジスタ」と呼ばれる。ストリーム操作コマンドでの転送先(←英語でデスティネーションという. 出力先のようなもの)へのポインタとして使用される。
引用元:https://ja.wikibooks.org/wiki/X86%E3%82%A2%E3%82%BB%E3%83%B3%E3%83%96%E3%83%A9/x86%E3%82%A2%E3%83%BC%E3%82%AD%E3%83%86%E3%82%AF%E3%83%81%E3%83%A3#%E6%B1%8E%E7%94%A8%E3%83%AC%E3%82%B8%E3%82%B9%E3%82%BF_(GPR)

...らしいけど ...
私「小難しくまとめたな、、、」

ということで、今回は軽く私がまとめます

どんな感じか

64 bit 32 bit 16 bit 8 bit 8 bit
RAX EAX AX AL AH
REX ECX CX CL CH
RDX EDX DX DL DH
EBX BX BL BH
RSP ESP SP
RBP EBP BP
RSI ESI SI
RDI EDI DI
名前は16 bit のやつがベースです
16bitのレジスタ名にEを付ければ32 bitレジスタ
16bitのレジスタ名のRを付ければ64 bitレジスタ

AX BX CX DXのレジスタは、XをLかHに書き換えることができます
AXを例にとると

|   AX|
|AH|AL|

このように、AHはAXの上位8ビット、逆に下位8ビットを参照したいならALという風です
これは、AX BX CX DXのどのレジスタにも言えることです。

32ビットレジスタの名前の由来

順に説明していきます

###AX
正式名称は「アキュムレータレジスタ」らしいですがよくわかりませんね
私もよくわかりませんが。どうやら計算の結果などが入るらしいです

###BX
正式名称は「ベースレジスタ」と呼ばれるらしいです
これは私もわからないので引用します

セグメントモードでのDS(後述)に格納されたデータを指し示すために使用される。
https://ja.wikibooks.org/wiki/X86%E3%82%A2%E3%82%BB%E3%83%B3%E3%83%96%E3%83%A9/x86%E3%82%A2%E3%83%BC%E3%82%AD%E3%83%86%E3%82%AF%E3%83%81%E3%83%A3#%E3%82%BB%E3%82%B0%E3%83%A1%E3%83%B3%E3%83%88%E3%83%AC%E3%82%B8%E3%82%B9%E3%82%BF

セグメントモード:わからん
DS:データのやつがあるところ(雑)

###CX
正式名))「カウントレジスタ」
ループとシフトローテート命令?に使われるらしいです
ループはloopニーモニックの荒れです
シフトローテート命令は、使ったことないです、、、

###DX
「データレジスタ」
計算と、IO操作に使われるそうです
AXとDXを使いたいときとか?わかんね

###SP
これは簡単です
スペシャル!!!
「スタックポインタ」です
現在のスタックがさしているアドレスが入ってます

###BP
これは、[SP]の親的な何かです
「ベースポインタ」
なんのベースかというとスタックのベース(最初のアドレス?)だと思います

###SI
「ソースレジスタ」
連続して読み込むときに使うらしいです
puts関数をアセンブラで書くときなどに使えるのではないでしょうか

###DI
「ディスとレーションレジスタ」?
SIとついの関係にあり、連続して書き込むときに使うらしいです

ほかにもレジスタはあります。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?