2ちゃんねる ■掲示板に戻る■ 全部 1- 最新50    

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

8086 vs. Z80 vs. 6809 vs. 6502 その10

896 :ナイコンさん:2016/05/02(月) 11:41:01.63 .net
> できると主張してる人が先に証拠を出すべき

これがリロケータブルのコードが書けるかどうかって言うなら「書ける」とさんざんこのスレにも出てるだろ。
実務でZ80使ったこと無い俺でも判ることが何で理解できないのかねぇ・・・
しかたない、Z80未経験の俺が纏めてやるよ。(経験者にお願い:間違ってたり足りないところあったら補足してくれ)。

ただし、リロケータブルなコードが「OS等の管理プログラムから呼出しされ機能する、一連りのコードとそのコードのみが参照、更新するデータからなるユーザープログラム」と言う解釈とする。
コレには当然「OS下で管理され、ロードと起動はリロケータブルなコードを書くプログラマの責任範疇外である」「リロケータブルコードが実行される環境は既定のものが存在する(プログラマが干渉できないという意味で)」も含まれる。
以後の条件後出しは許さん。

Z80で「位置に依存する命令」ってのは、ちょと調べれば判るが6種類ある(レジスタrは8ビット16ビットは「レジスタには変わりないから」と1種類とカウント、JPもJP ccの仲間だから、とすれば5種類)。
下のim16は「16ビット即値」ね。

CALL im16
JP im16
JP cc,im16
LD (im16),r
LD r,(im16)
RST x

このたった6種類の命令が使われてなければ、それは「完全にリロケータブルなコード」だ、メモリ上のどこにおいてもOK。
どこに、といっても固有アドレスを使うRST命令や、(「OSはこれ」と特に言われてないが)OSの縛りもあるから実環境にあわせた制限は当然出てくるが。
リロケータブルコードの中で、PCの位置が欲しいならOSにCALLやRST使ってPCを返すサービスファンクションとかシステムコールを用意すればいいし、呼び出す側で16ビットレジスタにアドレスに入れて呼び出してやってもいい。
OS呼出しだめ、アドレス渡しだめ、というなら、それは「絵の具も筆も使わずにキャンパスに絵を描け」と言ってるに等しい、ただの言いがかりだ。

総レス数 1007
237 KB
新着レスの表示

掲示板に戻る 全部 前100 次100 最新50
read.cgi ver.24052200