私は8086/8080マイクロプロセッサを研究しています。名前を持つそれらで使用するレジスタ、また、RAX、RBXなどのレジスタをR1、R2などと呼んでいますか?
- RAX
- RBX
- RCX
- RDX とR8の前に行き、その後、レジスタはR8、R9として名前が付けられてい... R15に。私は知りたかった
また、レジスタRAX、RBXなどをR1、R2などと呼んでいますか?
ありがとう
私は8086/8080マイクロプロセッサを研究しています。名前を持つそれらで使用するレジスタ、また、RAX、RBXなどのレジスタをR1、R2などと呼んでいますか?
また、レジスタRAX、RBXなどをR1、R2などと呼んでいますか?
ありがとう
標準プラクティスは、彼らの歴史的名を維持するために最初の8つのレジスタのためです。この規則は、Intel、AMD、およびほとんどのアセンブラのドキュメントで使用されています。
これは、常にr0-r7をrax、rcx、rdx、rbx、rsp、rbp、rsi、rdiとして定義するマクロを使用できると言われています。たとえば、あなたが
再び
%使用altregとNASMでこれらの定義を取得することができ、これは非標準であり、他人のために読んでコードが難しくなります。標準名を使用する別の理由は、それらがレジスタの機能のニーモニックとして機能することです。たとえば、rspがスタックポインタとして出てきます。 r4あまりそうではありません。
まず、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
はない、あまりにも
アルファベット順に私はそれは状況の一種「あなたは、あなたがしたいことができるかどうか」だと思います。たとえば、返された値では、RAXをRAXと呼ぶことがあります。しかし、より複雑なアルゴリズムで作業する場合、私はおそらく自分自身のために物事を単純に保つためにR1と呼ぶでしょう。 – Leigh