アカウント名:
パスワード:
ARMの汎用レジスタR15はPCである、と言ってあげましょう。
# あれはあまりにフツーなRISCだ
より多くのコメントがこの議論にあるかもしれませんが、JavaScriptが有効ではない環境を使用している場合、クラシックなコメントシステム(D1)に設定を変更する必要があります。
吾輩はリファレンスである。名前はまだ無い -- perlの中の人
ジジイのたわごと (スコア:1, 参考になる)
#会社では4.2BSDだったはず
VMSはMicroVAX で少しだけさわったことがあるけど、あまり記憶に残ってないな
PDP-11のアセンブラ勉強すると、Cの仕様がなるほどーーーと思いますよ
#高級アセンブラっていわれるゆえんも
register ってなんで役にたつん? とか
resister が8本あって、A7がスタック用、それ以外は何にでも使用可なんですよね
#general purpose resister
それ以降のCPUはDecの特許を避けるために、専用でしか使えない仕様に
なっていると思います
Re:ジジイのたわごと (スコア:0)
68000とかふつーのRISCを見れば明らかかと.
Re:ジジイのたわごと (スコア:0)
今となっては、汎用化してもメリット無いのかなぁ?
# パイプライン制御とかが面倒くさそうだ。
Re:ジジイのたわごと (スコア:3, 興味深い)
今時、そもそも「命令セットアーキテクチャを新規に設計」すること自体、ほとんどないんじゃないですかね。
世の中x86とARMばっかり…
とりあえず、組み込み用マイコンの PIC なんかはプログラムカウンタを含む各種特殊レジスタが、汎用レジスタファイルの先頭部分にマップされてます [hobby-elec.org]。
> # パイプライン制御とかが面倒くさそうだ。
命令セット上だけの存在で実際に汎用レジスタとしては存在しないゼロレジスタ(読んだら常に0、書き込んでも何も起きないレジスタ)なんかと同じようなもので、
命令セット的にPCへのアクセスを他のレジスタと共通化するだけですから、
通常の「PCを操作する命令」を処理する場合と同様に、「PCに使う汎用レジスタを操作する命令」を処理するときだけ細々した仕事が増えるだけの話でしょう。
「任意のレジスタをPCとして使用可能」だったりしたら怖いことになりますけど…
Re:ジジイのたわごと (スコア:1)
「命令セットの単純化」といった点だとARMがまさにそうだったような
jmp命令はただの汎用mov。加えて全命令に条件つき実行があるから、条件分岐もやはりのただのmov。
pc相対アドレス演算も汎用addでOK、だったような
Re:ジジイのたわごと (スコア:0)
http://www.arm.com/documentation/Instruction_Set/index.html [arm.com]
分岐のための Branch 命令というのがありますが。
Re:ジジイのたわごと (スコア:1)
jmp-> ret でしたRe:ジジイのたわごと (スコア:1)
昔はやっぱりタダのmov使ってました。
thumb命令セットができたarmv4t以降、モード切替等の追加処理が必要になってbx jmp専用命令が新設され、
v5でさらにblx call専用命令が新設されたようです。
arm-elf-gcc -march=armv4
call:
mov lr, pc
mov pc, r0
ret:
mov pc, lr
arm-elf-gcc -march=armv4t
call:
mov lr, pc
bx r0
ret:
bx lr
arm-elf-gcc -march=armv5
call:
blx r0
ret:
bx lr
Re:ジジイのたわごと (スコア:0)
http://everything2.com/index.pl?node_id=1357201 [everything2.com]
Re:ジジイのたわごと (スコア:2, 興味深い)
まさにその通りで、最近は採用されません。
速いプロセッサほどパイプライン段数が増える傾向にあり、
深いパイプラインを持つプロセッサはProgramCounterにアクセスしても、
その命令が実行される頃、PCは既にはるか先をポイントしています。
もしかすると、既にジャンプした先の、さらに先をポイントしているかもしれません。
そんな状態では、汎用レジスタとして扱ってもマトモなプログラムなど組めません。
Re:ジジイのたわごと (スコア:1)
ARMの汎用レジスタR15はPCである、と言ってあげましょう。
# あれはあまりにフツーなRISCだ