2012-02-03 13 views
2

私は8086/8080マイクロプロセッサを研究しています。名前を持つそれらで使用するレジスタ、また、RAX、RBXなどのレジスタをR1、R2などと呼んでいますか?

  1. RAX
  2. RBX
  3. RCX
  4. RDX とR8の前に行き、その後、レジスタはR8、R9として名前が付けられてい... R15に。私は知りたかった

また、レジスタRAX、RBXなどをR1、R2などと呼んでいますか?

ありがとう

+0

アルファベット順に私はそれは状況の一種「あなたは、あなたがしたいことができるかどうか」だと思います。たとえば、返された値では、RAXをRAXと呼ぶことがあります。しかし、より複雑なアルゴリズムで作業する場合、私はおそらく自分自身のために物事を単純に保つためにR1と呼ぶでしょう。 – Leigh

答えて

3

標準プラクティスは、彼らの歴史的名を維持するために最初の8つのレジスタのためです。この規則は、Intel、AMD、およびほとんどのアセンブラのドキュメントで使用されています。

これは、常にr0-r7をrax、rcx、rdx、rbx、rsp、rbp、rsi、rdiとして定義するマクロを使用できると言われています。たとえば、あなたが

再び

%使用altregとNASMでこれらの定義を取得することができ、これは非標準であり、他人のために読んでコードが難しくなります。標準名を使用する別の理由は、それらがレジスタの機能のニーモニックとして機能することです。たとえば、rspがスタックポインタとして出てきます。 r4あまりそうではありません。

1

まず、8086/80386/x86_64と8080/8085は完全に異なるアーキテクチャです。 8080は8ビットCPUで、8086は16ビットです。バイナリ互換ではありません。あなたがRxxについて学んでいるなら、それは8086ではなくx86_64です。8086はアーキテクチャではなくCPUです。一般的にはx86以上であることが必要です。x86_64

RBXはR2ではありません。実際のencoded orderはAX、CX、DX、BXです。 RBXを順にR3、およびAX、CX、DXはなりR0、R1、R2でなければならないので、レジスタは、多くの場合(ほとんど常に)8080個のレジスタに、

FYI、ゼロからカウントされ、この

ように符号化されます
111  A 
000  B 
001  C 
010  D 
011  E 
100  H 
101  L 

はない、あまりにも

関連する問題