>>746
このように使ってほしい、と、命令セットを作った側が説明していることと、実際はこのように動いている、は微妙に違うね

スタックについて言えば、
PC プログラムカウンタを
SP スタックポインターが示すメモリーに格納する
スタックポインターを増減してスタックが積まれたように見せる
指定アドレスにPCを設定する

という感じにプリミティブな動作があり

リターン命令は
この逆

PCとSPは他のレジスタと異なるように見えるかもしれないし、ユーザーは他のレジスタと区別するかもしれないけども、
作ってる側は、他のレジスタと同じように考えてる
中身はフリップフロップなわけだし、そこに繋がるランダムロジックが違うだけなので

もちろん、SPが無くても一般レジスタを使って、同じようなことは出来るだろうし、
CALL命令を使わずにJUMPだけで実現することも出来るだろうね
実用的に使えるユーザーレジスタが減ってしまうけども

PCを設定すれば、JUMPになるし、増減させれば相対ジャンプになる

結局のところ、メインメモリーから読み出して加工し書き込む
次の操作はメインメモリ―の内容に従う
というチューリングマシンそのものなので、
うちの命令セットは覚えやすいしレジスタも多いしアセンブラで書きやすいよと説明されているだけなので、
それをどう使うかはユーザーの自由ですね
未定義命令でも動けば使ってもいいだろうし、わざわざ未定義を潰すためにトランジスタを増やして遅くしたりしないので