5ちゃんねる ★スマホ版★ ■掲示板に戻る■ 全部 1- 最新50  

■ このスレッドは過去ログ倉庫に格納されています

レジスタについて

1 :名無しさん@そうだ選挙にいこう:2001/01/02(火) 23:55
命令レジスタ、汎用レジスタ、ベースレジスタ、インデックスレジスタなどなど・・
レジスタにはいろいろ種類がありますよね。
イマイチこれらについて分からないんですが、ご教授できないでしょうか?


2 :名無しさん@そうだ選挙にいこう:2001/01/03(水) 00:15
調べてくれば?

3 :名無しさん@そうだ選挙にいこう:2001/01/03(水) 00:16
とにかくレジスタの単位が演算の最小単位じゃない?それを入れ替えて
演算をつづけるにはどの程度の規模が必要なのかを調べると良いんじゃないか?

4 :名無しさん@そうだ選挙にいこう:2001/01/03(水) 00:22
アセンブラでもやんの?
ぼっくんが理解してるのにわ、
命令レジスタア = 次に実行する命令のメモリ番地のを入れてる。別名インストラクションポインタア
汎用レジスター= 足し算、かけ算、比較なんかに使います。
ベースレジスタア = メモリ番地を入れる。これにオフセット(ディスプレースメント)か、インデックスレジスタの値を足して、アクセスしたいデータの番地を作る。んで実際
データにアクセスする。
ふう疲れた。こんなもんでどう?

5 :御隠居:2001/01/03(水) 09:18
でも最近こういったことを勉強しようとする人がいるたぁうれしいね。

X86系であれば、EAX@` EBX@` ECX@` EDXの汎用レジスタ、EBPベースポインタ、
ESPスタックポインタ、EIPインストラクションポインタ、
ESI/EDIインデックスレジスタがある。汎用とはいえ、EAXはアキュムレータ
(演算の結果を残すところ)、EBXはベースレジスタ(アドレス演算用)、
ECXはカウンタ(REP命令やJCXZで特異的に参照)、EDXはデータレジスタのように
役割が決まっているところがX86アーキテクチャの嫌らしいところだ。例えば
レジスタによるポート番号指定の16bitI/Oポート出力は、AX/DXレジスタしか使えない。
out AX@`DX
SPARC/MIPSなどのRISC系やミニコン的な68000系とは事なり、基本設計思想が
電卓用の8080まで遡るから、レジスタの役割が限定されてしまっているのだ。
(CS/DS/SS/ES/FS/GSなどのセグメントレジスタについては32bit環境では
あまり重要でないので、ここでは触れない)

基本的な足し算、引き算はどのレジスタでも行えるが、SP@`BPレジスタへの
足し算は、ローカル変数を確保する場合にだけしか使われないと思った方がよい。
push ebp
mov ebp@`esp
add esp@`16
とかね。EBPレジスタはローカル変数の参照に使われる。
mov eax@` [ebp+4]
のように。

ESI/EDIは、本来アドレス指定のためのレジスタだが、レジスタの数の少ない
X86では、けっこう汎用的に使われる。[EBX+ESI+4]のようにアドレス間接参照や、
REP MOVSBのようなストリング転送命令でのアドレス指定が主たる役割だが、
高速アクセス可能なローカル変数としても使われる。

3 KB
■ このスレッドは過去ログ倉庫に格納されています

★スマホ版★ 掲示板に戻る 全部 前100 次100 最新50

read.cgi ver 05.04.00 2017/10/04 Walang Kapalit ★
FOX ★ DSO(Dynamic Shared Object)