■ このスレッドは過去ログ倉庫に格納されています
8086 vs. Z80 vs. 6809 vs. 6502 その10
- 705 :ナイコンさん:2016/04/28(木) 23:08:43.49 .net
- 自前でPC取得したきゃすればいいいが、自前である必要がない。
アロケートした側はベースアドレスを把握してるのだから。渡せばいいだけ。
- 706 :ナイコンさん:2016/04/28(木) 23:12:45.11 .net
- >>705
なにやら根本的に理解して無い様子、しばらくROMってたほうがいいんじゃないか?
- 707 :ナイコンさん:2016/04/28(木) 23:15:35.10 .net
- 根本ねぇ。馬鹿なの?必死こいてPC取得とかアホの極みだろw なんだそのコードw
- 708 :ナイコンさん:2016/04/28(木) 23:17:12.06 .net
- >>707
馬鹿なのはあきらかにお前。また恥をかく前に撤退しろよw
- 709 :ナイコンさん:2016/04/28(木) 23:23:58.56 .net
- じゃあその根本とやらを説明してみてよ。
なぜベースアドレスを渡せばいいだけなのに、それをやらない根本的理由をw
- 710 :ナイコンさん:2016/04/28(木) 23:26:50.99 .net
- > ベースアドレスを渡せばいいだけ
というのが根本的な間違い。
- 711 :ナイコンさん:2016/04/28(木) 23:30:43.61 .net
- その理由を聞いてるのに答えれないのは根本が何も分かってないからだよw
ほんとおまえ恥ばかりかいてるけどメンタル大丈夫かw
- 712 :ナイコンさん:2016/04/28(木) 23:32:03.22 .net
- >>711
そこまで言うなら
ベースアドレスを渡せばいいだけ
というコードを書いてみろよw
- 713 :ナイコンさん:2016/04/28(木) 23:38:23.99 .net
- 理由を聞いてるのにコード書いてみろってなに逆ギレ左翼論法w
- 714 :ナイコンさん:2016/04/28(木) 23:42:16.21 .net
- 書いてみれば理由(の半分くらい)はわかると思うよ?
- 715 :ナイコンさん:2016/04/28(木) 23:49:24.88 .net
- なるほど。おまえは自分が挫折した理由を半分くらい理解したわけだな。
残り半分を教えてやろう。スキル不足だ。
- 716 :Office & Gamers @ 試験運用中(トリなしw:2016/04/29(金) 00:03:25.68 .net
- ムダな足引っ張りはやめて、素直にDarkGDK使いなさいw
- 717 :2016.4.28.Thu 今日はマイコン40周年の日:2016/04/29(金) 00:15:20.11 .net
- http://s-sasaji.ddo.jp/pccata/vic1001.jpg
- 718 :ナイコンさん:2016/04/29(金) 02:00:49.77 .net
- ベースアドレス、ベースアドレスって言ってるのは、IXに入れておけばどうとでもなるって意味?
あまり >>704と大差無い結果になる気がするが?
それと、Z80で相対アドレスCALLって出来るんだっけ?
x86ならばこういうバイナリパッチは常套手段だけど…
- 719 :Office & Gamers @ 試験運用中(トリなしw:2016/04/29(金) 02:07:58.70 .net
- CALL NEXT
NEXT: POP HL
どうぞw
- 720 :Office & Gamers @ 試験運用中(トリなしw:2016/04/29(金) 02:22:33.09 .net
- 自分で計算することになるけど、相対アドレスCALLができるのは8048系統ぐらいだろうなw
>>718は何の用途で使ってるんだ?wwww”
- 721 :ナイコンさん:2016/04/29(金) 03:01:57.71 .net
- >>704
・・・
CALL L1
L1: POP HL
LD DE,MSG - L1
・・・
Z80のCALL命令は、絶対アドレス指定しかないから
そもそも提示のコードはリロケータブルにならない
Z80でPC相対が出来るのは、JR/JR xx のみ
残念でした。
- 722 :ナイコンさん:2016/04/29(金) 03:28:36.81 .net
- やっぱそうだよねぇ。あとDJNZも相対指定可だった気がするけど、どうでもいいか
どうしてもやりたいなら
0038: POP HL
JP (HL)
としておいて RST 38H とするとか…かな?
むかーし昔、これやって怒られた気もするけどw
- 723 :ナイコンさん:2016/04/29(金) 05:32:38.42 .net
- >>702
たぶん君の気のせい
スレッドセーフに関係しそうなのはリエントラントっていってた奴ぐらいしかいないし
- 724 :720:2016/04/29(金) 06:37:41.28 .net
- 確かに気のせいだった・・・
マルチタスクは〜と新しい話題振られる。
リロケータブル書きにくいよね、と続く。
書けるだろ、と突込みが。
簡単に書けないないのは皆わかっててのやり取り(の様に見えるのだが)に「リロケータブル書くの簡単だろ(超意訳」とか本気で言ってるとしか思えん訳わからんバカが乱入した、と。
- 725 :ナイコンさん:2016/04/29(金) 07:49:17.39 .net
- Z80でリロケータブルなコード書くのは面倒くさい。
- 726 :ナイコンさん:2016/04/29(金) 08:25:03.19 .net
- ベースアドレス君 玉砕の巻き
- 727 :ナイコンさん:2016/04/29(金) 10:16:38.05 .net
- >>721
うわ…その通りだw
>>722のようなコードを用意して置いてそれを呼び出すしかないのかな。
固定アドレスで呼び出せるBIOSかOSにコードを用意しておけば38HじゃなくてもOKだと思うけど。
- 728 :ナイコンさん:2016/04/29(金) 11:24:21.15 .net
- >>726
いやおまえがまた論破されたんだよ。
JP (IX) で飛んでくるんだから、ベースアドレスは普通に分かってるから。昔のコードはそうなってるでしょ。
- 729 :ナイコンさん:2016/04/29(金) 12:13:18.14 .net
- リロケータブル書けない君、面倒君は単に開発経験ないのだろう。
- 730 :ナイコンさん:2016/04/29(金) 12:40:54.36 .net
- >>724
馬鹿はおまえだよw
- 731 :ナイコンさん:2016/04/29(金) 13:09:22.52 .net
- >>728
ほうほう
Entry:
...
call L1
...
L1:
...
ret
リロケータブルにしてくれ
(IX = Entry のアドレスでいいよ)
- 732 :ナイコンさん:2016/04/29(金) 14:08:03.26 .net
- Entry:
...
LD A, 0_;taskID
call _dispach
...
_dispatch:
LD HL, _table
ADD L,A
ADD L,A
JP (HL)
L1:
...
ret
- 733 :ナイコンさん:2016/04/29(金) 15:58:15.56 .net
- >>728 >>729
実例の一つも出せばそれで終わりなのに、残念な書き込みだな
- 734 :ナイコンさん:2016/04/29(金) 16:12:02.34 .net
- できない理由を説明しろ → コード書けば分かる。おまえがコードだぜ → コードです → 実例出せ
馬鹿なのか?
- 735 :ナイコンさん:2016/04/29(金) 16:38:03.20 .net
- >>734
> コードです
ひょっとして >>732 のことを言ってるのか?
> call _dispach
> LD HL, _table
笑うしかないんだが w
- 736 :ナイコンさん:2016/04/29(金) 16:50:44.72 .net
- >>735
何を勘違いしてるかだいたいわかってきた。FreeBSDのコードが参考になるよ。
- 737 :ナイコンさん:2016/04/29(金) 16:54:20.38 .net
- >>735
それリロケータブルタスクの外のディスパッチルーチンやでwww
- 738 :ナイコンさん:2016/04/29(金) 16:54:52.20 .net
- FreeBSD/z80 ?
- 739 :ナイコンさん:2016/04/29(金) 17:28:18.29 .net
- >>732
ああ、これが>>731の「実例」なのかw
すべてのサブルーチンをこうやって呼ぶのかw
毎回テーブル作ってw メモリ食うしw OS側は面倒で仕方ないねw
ディスパッチルーチンのオーバーヘッドもあるしw
その上このディスパッチルーチンだと_tableの下位8bitは0固定、_taskIDは127まで
とか、色々涙ぐましい制限まで要りそうだねw
何というか…面倒くさい事の見本だねw
- 740 :ナイコンさん:2016/04/29(金) 17:41:54.11 .net
- Z80なんて64KBしかないのにTASKなんて数個だし、アロケートテーブルは16byteもあれば足りる。
ほんと8bitCPUで何をやらせる気だよ。OS側ってなんだよw
いつからマルチタスクOSを作る話になってんだよw 典型的な無能SEの後出し仕様じゃねーか。
スレッドセーフ言い出したりZ80にMMUあると勘違いしてた馬鹿でしょ?
- 741 :ナイコンさん:2016/04/29(金) 17:55:49.08 .net
- >>737
要するに完全にリロケータブルにはできないってことだろ
まあそれはいいとしても
・サブルーチンの数だけエントリー作る必要ある
・プログラム修正する度にエントリーの内容を変更しないとダメ
・サブルーチン番号を渡す必要あるのでレジスタがひとつつぶれる
とても普通に書けるってレベルじゃないわな
- 742 :ナイコンさん:2016/04/29(金) 18:05:07.98 .net
- 共用するものをサブルーチンにするんだから、それはコア部分に置くのでリロケータブルにしないね。
メモリが64kbしかないんだから一回走らせたら破棄するコードをリロケータブルにするんだよ。
管理コードもとにかくシンプル。8bitCPUじゃ常識。
>レジスタがひとつつぶれる → とても普通に書けるってレベルじゃない
というかアセンブラ経験ないど素人かよw 馬鹿なんだから素直にBASIC使っとけw
- 743 :ナイコンさん:2016/04/29(金) 18:05:20.94 .net
- >>731ってTASK呼び出しのサンプルなのか?
なんか、凄く都合よく解釈してないか?
- 744 :ナイコンさん:2016/04/29(金) 18:12:59.00 .net
- どや顔でだしてきたコードが >>732 ww
サブルーチンは共用しか認めないとか、レジスタがつぶれることにはまともな反論できないとか
恥ずかしすぎるだろ
- 745 :ナイコンさん:2016/04/29(金) 18:18:25.00 .net
- 反論する馬鹿はいない。元からレジスタなんてほとんどないCPUばかりだろw 8086もz80も6809も6502もwwww
- 746 :ナイコンさん:2016/04/29(金) 18:26:14.31 .net
- LD HL, _table
ADD L,A
ADD L,A
JP (HL)
JP (HL) の動作は(表記からわかりにくいけど) PC←HL だから、
Aが0の場合そのままJP _tableと等価の命令になる、
この場合確実に暴走するんじゃね?
そもそも全タスク共通で一つのテーブルというのも現実味がない。
タスクごとにローカルなテーブルを持って、
dispatchルーチンではそれをIXに格納されてるアドレス相対で参照するべき。
- 747 :ナイコンさん:2016/04/29(金) 18:28:58.67 .net
- ADD L,A なんて命令ないし、やっつけ杉だろw
- 748 :ナイコンさん:2016/04/29(金) 18:35:05.06 .net
- そういや間接が一段足りないなw
ADD L,Aも無いなw
>アセンブラ経験ないど素人
なんだ、自己紹介だったのかw
>馬鹿なんだから素直にBASIC使っとけw
特大ブーメランだったなw
- 749 :ナイコンさん:2016/04/29(金) 19:29:49.12 .net
- 気づかないおまえが馬鹿w
- 750 :ナイコンさん:2016/04/29(金) 20:08:24.00 .net
- 結局玉砕の巻じゃねーか w
- 751 :ナイコンさん:2016/04/29(金) 20:47:05.75 .net
- 俺のチン子はベクトル型
- 752 :ナイコンさん:2016/04/29(金) 20:51:20.48 .net
- 無理とか面倒とか「不可能じゃないけど」ってスタンスばかりの中「Z80でリロケータブルなコードが簡単だろ」と主張した奴は一度もコード例を出してないのな。
- 753 :ナイコンさん:2016/04/29(金) 20:52:54.34 .net
- 懲りもせず孫持ちジジイが暴れているのか。老害。
- 754 :ナイコンさん:2016/04/29(金) 21:24:39.83 .net
- 68000が話題にならないからってハエみたいに煩くするなよ、クソ餓鬼。
ママのおっぱいでもしゃぶってろ。
- 755 :ナイコンさん:2016/04/29(金) 21:50:15.32 .net
- >>752
>レジスタがひとつつぶれる → とても普通に書けるってレベルじゃない
- 756 :ナイコンさん:2016/04/29(金) 21:58:14.19 .net
- 初心者だろうな。初めはみんなレジスタ少ないって文句を言うのさ。
でもRISC-CPUで書くと分かる。レジスタが32個あっても結局足りないのさ。ボスキャラの吐く弾幕すら保持できない。結局メモリにデータ置く。
するとRISCの糞さが浮かび上がる。メモリに対して演算ができない。CISCの強力なアドレッシングがいかに効率的かに気づく。
- 757 :ナイコンさん:2016/04/29(金) 22:33:09.51 .net
- ベースアドレス君はごまかしモードに入りました
- 758 :ナイコンさん:2016/04/29(金) 22:36:00.03 .net
- ベースアドレスが渡せない理由を挙げるとこれだけある。理解したかね? ベースアドレス君。
・サブルーチンの数だけエントリー作る必要ある
・プログラム修正する度にエントリーの内容を変更しないとダメ
・サブルーチン番号を渡す必要あるのでレジスタがひとつつぶれる
とても普通に書けるってレベルじゃないわな
- 759 :ナイコンさん:2016/04/29(金) 22:40:51.60 .net
- >サブルーチンの数だけエントリー作る必要ある
ベースアドレスあれば戻りアドレスPushしてジャンプするだけじゃん。
- 760 :ナイコンさん:2016/04/29(金) 22:41:41.30 .net
- >プログラム修正する度にエントリーの内容を変更しないとダメ
これは意味が分からん。
- 761 :ナイコンさん:2016/04/29(金) 23:22:38.27 .net
- こんなんでいいんじゃね?
RST 38H
DEFW SUB1-LABEL1
LABEL1: NEXT_OP
SUB1:
RET
0038: POP HL
LD E,(HL)
INC HL
LD D,(HL)
INC HL
PUSH HL
ADD HL,DE
JP (HL)
Z80ニワカがZ80小馬鹿にしながら書きなぐってみたよw
レジスタが盛大に潰れるし、オーバーヘッドもデカイけど、普通のアセンブラで書けるよw
テーブルも作らなくていいしw
- 762 :ナイコンさん:2016/04/29(金) 23:30:32.16 .net
- 香具師の多いスレだなあ
- 763 :ナイコンさん:2016/04/29(金) 23:43:53.12 .net
- ああ、なんとなく判ってきたw ベースアドレス爺の言いたいことがw
>>704 の例は
LEA DE,(IX+(MSG-BASE_ADDR))
って1命令で終わりだろって感じじゃないか?
齢のせいで幻聴、幻覚、無い命令が見えるっていう症状が激しいんだろw
- 764 :ナイコンさん:2016/04/30(土) 00:05:18.32 .net
- 1命令か複数命令だろうができるってだけなんだけど。なんでそんなにゆとりは発狂してるんだ?
1バイトの青春なんて言葉も知らないガキのくせに、
レジスタ一つ使うだけでなんでそんなに発狂するのかおじーちゃんにはさっぱり分からん。
- 765 :ナイコンさん:2016/04/30(土) 00:34:27.03 .net
- 恥の多い人生だったんだろうね。もう無理しなくていいよ。
- 766 :ナイコンさん:2016/04/30(土) 00:48:00.06 .net
- >>763
LD D,(IX+d)
LD E,(IX+d)
あるけど? 一体何を指摘したいんだい?
ベースアドレスがダメな理由は今のところレジスタ使うからとか、複数命令だからとかアホな反論以外ないけど?
ただの機械語全否定。
- 767 :ナイコンさん:2016/04/30(土) 01:03:54.34 .net
- >>766
あのさw そのLD命令で >>704を書き換えてくれよw
もう耄碌して会話もままならないの?
- 768 :ナイコンさん:2016/04/30(土) 01:10:02.30 .net
- >>767
だからさぁ。なぜダメな理由を説明しないの?コード書け、実例だせってアホかと。
説明したと思ったら、レジスタ使った。複数命令だったとか。それが根本的理由なのか?だから馬鹿にされる。
LD D,(IX+d)
LD E,(IX+d)
って書いたろ。一体何が足りないんだ?はっきり理由言え。
- 769 :ナイコンさん:2016/04/30(土) 01:15:33.12 .net
- あんまり面白いんで思わず書き込みボタン押しちゃったけど、そのLD命令2つと
>>763のLEA 命令が等価だとでも?w ま、無い命令だけどさw
ホントに機械語やったことあるの?w
>>704をちゃんと書き換えてみなってw 出来ないの?w
- 770 :ナイコンさん:2016/04/30(土) 01:23:19.81 .net
- >>768
何一つ説明できない馬鹿はスルーしたほうがいい。自分で書けないから他人も書けないというアホ論理だから。
たがら書いてみろとしか言えない。
- 771 :ナイコンさん:2016/04/30(土) 01:28:46.75 .net
- 先に理由は絶対に言わないよな。典型的な左翼。論破されるのが怖くて言えないのだろうな。
- 772 :ナイコンさん:2016/04/30(土) 01:32:03.64 .net
- 横から失礼するが>>704をリロケータブル化って
IYにプログラムの開始アドレスが入ってるとして
PUSH IY
POP HL
LD DE, MSG
ADD HL, DE
EX DE, HL
LD C,9
CALL 5
RET
MSG: DB 'HELLO WORLD$'
この程度のことなんでないの? 何そんな草生やしてるのかわけわからん。
- 773 :ナイコンさん:2016/04/30(土) 01:45:24.07 .net
- >>772
まさにそれなんだけど。
>>718書いたのも俺。>>704の最初のCALL命令がPUSHに変わる程度だから「大差無い」って
指摘してるんだけど、LD D,(IX+d)とLD E,(IX+d) で簡潔に書けるって言い張っている爺さんが居るのよw
ま、どうせZ80はニワカだからもっとステップ数の少ない書き方もあると思うんだけど、それを示してくれれば
それまでの話なのにw
- 774 :ナイコンさん:2016/04/30(土) 01:49:49.73 .net
- Z80のインデクスレジスタは -128〜+127 の範囲でしか相対アドレスが使えないし、
プログラムのサイズを256バイト以内に制限するとかでなければあんまいい方法
にはならんのじゃないかな。
- 775 :ナイコンさん:2016/04/30(土) 01:54:16.42 .net
- >>773
キミねぇ。さっきから開始アドレスを渡すのがダメな理由を全然説明してないよ。
草ばかり生やしてないで少しは説明しなよ。それじゃ誰も理解しないよ。頭悪すぎだよ。
- 776 :ナイコンさん:2016/04/30(土) 01:58:39.01 .net
- >>773
まさにそれってできないんじゃなかったの? アホの子なの?
- 777 :ナイコンさん:2016/04/30(土) 02:02:57.52 .net
- 書いてる途中で正解が来ちゃったから後付けだけど、LEA命令があればこれは動くよ
LEA DE,(IX+(MSG-BASE_ADDR))
LD C,9
CALL 5
RET
MSG: DB 'HELLO WORLD$'
ディスプレースメントに16bit取れるならMSGとベースアドレスがどんな位置関係でも
普通問題ないでしょう。
ベースアドレス爺の発言を斟酌すると、どうもこうなるんだがw
LD D,(IX+d)
LD E,(IX+d)
LD C,9
CALL 5
RET
MSG: DB 'HELLO WORLD$'
これは動かないよね。2命令になるのは問題じゃない!ってさっきから怒られてるけど、
いや、問題はそこじゃないんだけどw
LD D,IX+d
ってのがあれば >>774の言う通りベースアドレス-128〜+127バイトの範囲で動くとは
思う。
- 778 :ナイコンさん:2016/04/30(土) 02:08:56.49 .net
- うん。アホの子だ。間違いない。
- 779 :ナイコンさん:2016/04/30(土) 02:14:38.90 .net
- >>775
あなたがこの発言をしたと思っているんだが
703 名前: ナイコンさん [sage] 投稿日: 2016/04/28(木) 23:08:43.49
自前でPC取得したきゃすればいいいが、自前である必要がない。
アロケートした側はベースアドレスを把握してるのだから。渡せばいいだけ。
705 名前: ナイコンさん [sage] 投稿日: 2016/04/28(木) 23:15:35.10
根本ねぇ。馬鹿なの?必死こいてPC取得とかアホの極みだろw なんだそのコードw
>>704 の書き換えが問題無かったとして、>>772との違いはCALL命令とPUSH命令の
1命令だけ。人をアホの極みとまで呼べるほどの差は出ないだろ?って思ったまでよ。
- 780 :ナイコンさん:2016/04/30(土) 02:15:35.59 .net
- >>777
あのねぇ。無い命令は他の命令と組み合わせたら実現できる話でしょ。機械語の基本でしょ。
その程度でベースアドレスは渡せないと発狂してたの?
結局、最初のレジスタ使うからダメ、複数命令はダメと同じレベルの指摘なんだけど。アホくさ
- 781 :ナイコンさん:2016/04/30(土) 02:23:02.14 .net
- だめだ、このジジイもう恍惚の人になってるw
自分の発言も忘れているし、どうしたって話かみ合わないw
自分は介護職目指すつもりないからもうどうでもいいやw
- 782 :ナイコンさん:2016/04/30(土) 02:33:51.51 .net
- >>780
おそらく8086から入ったから8bitの命令の少なさに耐えられないんだろう。
ない命令は実装する方法がないとか勘違いしてるのだろう。
LD D,IX+d がないから無理とかおまえは幼稚園児かってレベル。
- 783 :ナイコンさん:2016/04/30(土) 02:39:26.39 .net
- マスホを手にしたゆとりが自らデジタルネイティブと名乗り、パソコンを馬鹿にしてるみたいなものか。
- 784 :ナイコンさん:2016/04/30(土) 03:22:23.47 .net
- 出来る出来ないで言えば「ベースアドレスなんか渡さなくても」出来るだろ。
- 785 :ナイコンさん:2016/04/30(土) 04:29:07.17 .net
- どうやら、レジスタ一個取られたからボクのロジック破綻だよぉ、あの命令もこの命令も無いから難しくて書けないよぉ、
がベースアドレス渡しができない理由らしい。そりゃ理由書けと言われても恥ずかしくて書けないわなw
じゃあコード書いてみろという反論も納得、納得。
- 786 :ナイコンさん:2016/04/30(土) 08:00:10.05 .net
- 出来る出来ないで言えばたいていの事は「できる」からなぁ。
- 787 :ナイコンさん:2016/04/30(土) 08:29:34.91 .net
- 残念ながら「簡単に書く」ことは出来ないのがはっきりしただけだったな
- 788 :ナイコンさん:2016/04/30(土) 08:54:07.73 .net
- ここで改めてはっきりさせる必要がある奴ってのは・・・だねぇ。
- 789 :ナイコンさん:2016/04/30(土) 09:43:08.92 .net
- 事実を書かれて顔真っ赤
おそまつ
- 790 :ナイコンさん:2016/04/30(土) 11:13:10.66 .net
- だねぇ。ほとんおそまつ。
レジスタ一個使ったら、とても普通に書けないだもんねぇ。相手にしないほうがいいよ。高級言語と勘違いしてんじゃねーの?
LD D,(IX+d)はあるけど、LD D,IX+d ないから動かないって・・・ほんと簡便してよ。それがアドレス計算ができない理由とはいやはや。
- 791 :ナイコンさん:2016/04/30(土) 11:33:28.59 .net
- 香具師の多いスレだなぁ
- 792 :ナイコンさん:2016/04/30(土) 12:24:29.13 .net
- 小便くせーガキが昔の8bitCPUをディスってるようだけど、おれたちの世代はそんなCPUで月まで行った。
それに比べてなんなんだおまえらガキは。月まで行けないだけでなく、人は乗せれないは、
打ち上げたはいいが高性能CPU積んでるのにバグって姿勢制御できなくて高速スピンして木っ端微塵だって?
なめてんのか、糞ガキ。
- 793 :ナイコンさん:2016/04/30(土) 13:35:17.61 .net
- 世代が同じってだけで
自分でやったわけでもないのに
ここまで大口叩ける事に
同世代として恥ずかしい
- 794 :ナイコンさん:2016/04/30(土) 15:47:57.87 .net
- ベースアドレス君が話題変えるのに必死なんだろ
察してやれよ
- 795 :ナイコンさん:2016/04/30(土) 16:25:31.70 .net
- まだベース…いや、何でもない。
GWプロジェクトの合間にパズル感覚でまたZ80ニワカしてみたから貼っとく
LD HL,MSG-LABEL1
RST 30H
LABEL1: LD C,9
CALL 5
RET
MSG: DB 'HELLO WORLD$'
0030: POP DE
ADD HL,DE
EX HL,DE
JP (HL)
まぁ例によって「必死こいてPC取得」なんで、「馬鹿なの?」とか「アホの極みだろw」
とか罵詈雑言が聞こえてくるようだけど。
それとお題からして30Hとか、そんな低位アドレス勝手に使えるのか判らんけど。
それにしてもなんだな、こうしてRUN TIMEルーチン揃えていくと「あと10年は戦える」
とか言っちゃった人の気持ちも少しだけ判…やっぱり判らん
- 796 :ナイコンさん:2016/04/30(土) 16:37:58.23 .net
- プログラムのターゲットOSがCP/MならばRST 30Hは予約済み。
RST 08HからRST 28Hまでは使用可能。
- 797 :ナイコンさん:2016/04/30(土) 16:55:05.90 .net
- > プログラムのターゲットOSがCP/MならばRST 30Hは予約済み。
というのはガセ
- 798 :ナイコンさん:2016/04/30(土) 17:02:01.02 .net
- >>795 いやぁ、そんな事ないよ
> 「必死こいてPC取得」
問題の本質は、↑だから
Z80は、これが難しい、
今までに提示されたコード全てが、絶対アドレスを使ってるからな
RST xx にしても、絶対アドレスを使ってるわけで本質的には差が無いが
"誰かが、ベースアドレス渡してくれる"
って、本末転倒な 言い分に比べれば遥かにマシだ
このパズルの回答としては
絶対アドレスを一切使わずに、PC取得するコード
これを提示出来るレベルのヤツが、いつ出てくるかに興味があるな。
その他部分は、目糞鼻糞程度の差異であって、ハッキリ言ってどうでも良い
- 799 :ナイコンさん:2016/04/30(土) 17:03:23.53 .net
- > プログラムのターゲットOSがCP/MならばRST 30Hは予約済み。
CP/Mでは0番地がプログラム終了に使われるのとDDTが内部でRST 38Hを
デフォルトで使ってるだけで他は自由。Z80を割り込みモード1で動作
しているシステムであればDDTにパッチを当てて30Hや28Hを使ってもいい。
- 800 :ナイコンさん:2016/04/30(土) 17:06:53.67 .net
- >>798
> 今までに提示されたコード全てが、絶対アドレスを使ってるからな
> RST xx にしても、絶対アドレスを使ってるわけで本質的には差が無いが
文字列出力で5番地呼び出してる癖にバカなのかな?
- 801 :ナイコンさん:2016/04/30(土) 17:12:43.61 .net
- まだやってんのか。
PUSH IX
JP (HL)
するだけじゃねーか。
- 802 :ナイコンさん:2016/04/30(土) 17:14:01.00 .net
- > "誰かが、ベースアドレス渡してくれる"
> って、本末転倒な 言い分
そういう機能を実現したければそういう実装をするだけだろ。
ベースアドレスが欲しければ渡してくれるようローダを作るだけ。
- 803 :ナイコンさん:2016/04/30(土) 17:17:03.94 .net
- 実現のための仕組みを考えるんじゃなくて、できない理由を必死に探してるのは馬鹿としか言えない。
- 804 :ナイコンさん:2016/04/30(土) 17:18:08.75 .net
- 文字列出力のシステムコールが許されるならPC取得のシステムコールが許されない筈がない。
- 805 :ナイコンさん:2016/04/30(土) 17:32:06.26 .net
- 昔のバイナリとか見たらPC取得ルーチンとか普通にあるかもな。
- 806 :ナイコンさん:2016/04/30(土) 17:52:23.13 .net
- Z80でPCの値が取得したいならRSTやCALL使うのが手っ取り早いと思うんだけど、それじゃダメなのか?
ダメだっていうならもっといい方法教えてくれよ。
- 807 :ナイコンさん:2016/04/30(土) 17:56:09.52 .net
- 呼ぶ側
LD HL,L1
CALL L1
呼ばれる側
L1:
(呼ばれたときにHLにPCと同じ値が入ってる)
RET
- 808 :ナイコンさん:2016/04/30(土) 18:26:12.56 .net
- >>797,797
CP/Mの0ページメモリマップの参考資料
つhttp://fast-uploader.com/file/7017563171321/ PASSWORD CPM
出典 オーム社刊 パーソナルコンピュータのためのCP/M入門より
まあNETで調べると使用可能としてるHPがあるから間違うのは仕方ないだろうけど
リアルでCP/Mを使ったことが無いのが判ってしまうね。
おまけ知識としてCP/M PLUSではRST 08Hから38Hは全てReserveになっている。
- 809 :ナイコンさん:2016/04/30(土) 18:27:38.63 .net
- リアルに存在したとは思えないぐらい日本では影が薄かったからな。
- 810 :ナイコンさん:2016/04/30(土) 18:40:09.93 .net
- >>806
> Z80でPCの値が取得したいならRSTやCALL使うのが手っ取り早いと思うんだけど、それじゃダメなのか?
手っ取り早いと言うよりそれしか方法がないだろ
どっちも固定番地を使うから完全リロケータブルにはならないって言うだけのこと
- 811 :ナイコンさん:2016/04/30(土) 18:40:12.22 .net
- > 出典 オーム社刊 パーソナルコンピュータのためのCP/M入門より
英語が読めないので一次資料が出せないというのは分かったw
- 812 :ナイコンさん:2016/04/30(土) 18:42:08.12 .net
- 6809や8086のソフトウェア割り込みを含む割り込みベクタは固定番地だが
Z80のシステムコールが固定番地でダメな理由がわからない。
- 813 :ナイコンさん:2016/04/30(土) 18:46:13.29 .net
- 根本的にできないと先に言っちゃったから、できることはすべてダメなんだろう。
レジスタ一つ使ったぐらいで「とても普通に書けないレベル」って言うぐらいだし。
- 814 :ナイコンさん:2016/04/30(土) 18:46:49.16 .net
- > まあNETで調べると使用可能としてるHPがあるから間違うのは仕方ないだろうけど
> リアルでCP/Mを使ったことが無いのが判ってしまうね。
リアルでCP/M使ったことない奴はマニュアルに予約とあるから使っちゃダメとか本気で信じてそうだなw
- 815 :ナイコンさん:2016/04/30(土) 18:49:27.72 .net
- "骨までしゃぶる"使い方とか想像の範囲外なんだろう
- 816 :ナイコンさん:2016/04/30(土) 19:09:11.17 .net
- >>810
> どっちも固定番地を使うから完全リロケータブルにはならないって言うだけのこと
システムが固定番地を占有するってだけで、その上で動作するプログラムは
完全リロケータブルでしょ。特定の領域がプログラムで使用されないということに
特別な意味はないよね。
- 817 :ナイコンさん:2016/04/30(土) 19:16:16.04 .net
- 完全リロケータブルという用語まで作り出したか。アロケートを管理する部分、システム共通ルーチンまでリロケータブルを要求してくるとは。
もうおまえの勝ちでいいよ。誰もおまえには勝てないよ。いくらでも後出しで仕様出してくるんだからw
- 818 :ナイコンさん:2016/04/30(土) 19:24:32.42 .net
- > どっちも固定番地を使うから完全リロケータブルにはならないって言うだけのこと
システム呼び出しを例えば0038Hにしてそれを呼び出す命令をRST命令に限定し、
M1サイクルでRST 38Hを判定してバンク切り替えをする機構を用意すれば
固定番地を使用してもプログラムは64kBどこにでも配置できるしお前の言う
"完全リロケータブル"になるよ。
- 819 :ナイコンさん:2016/04/30(土) 19:29:28.58 .net
- > どっちも固定番地を使うから完全リロケータブルにはならないって言うだけのこと
MS-DOSのEXEは0000:0000〜FFFF:FFFFすべてのアドレスにロードされる
わけではないので完全リロケータブルじゃない、くらいのバカ主張
- 820 :ナイコンさん:2016/04/30(土) 19:52:55.11 .net
- 670 : ナイコンさん2016/04/28(木) 13:54:32.53
>Z80だとリロケータブルなコードがものすごく書きにくい
普通に書けるだろ。この前提でなぜレスが進むんだ。馬鹿なのか。
- 821 :ナイコンさん:2016/04/30(土) 19:59:47.96 .net
- > サブルーチン番号を渡す必要あるのでレジスタがひとつつぶれる
> とても普通に書けるってレベルじゃないわな
- 822 :ナイコンさん:2016/04/30(土) 20:22:36.29 .net
- 「リロケータブルなコード」の中から「リロケータブルなコードの中にある」サブルーチンをCALLするってどうやるんだ?
自己書き換え?
それだとやっぱりPCの値が必要で、PCの値を得るには・・・
- 823 :ナイコンさん:2016/04/30(土) 20:23:42.15 .net
- PUSH IX
JP (HL)
- 824 :ナイコンさん:2016/04/30(土) 20:30:48.01 .net
- それで逝けるのか・・・
IXとHLの求め方が結局PCの値をとってきてって手間がかかるのか。
メンドイ・・
- 825 :ナイコンさん:2016/04/30(土) 20:34:30.95 .net
- 面倒ならマクロでも作っとけ。
- 826 :ナイコンさん:2016/04/30(土) 20:53:39.54 .net
- 面倒なら8086でも使っとけ。
- 827 :ナイコンさん:2016/04/30(土) 20:56:29.66 .net
- いちいちPCとってきて計算してとかかったりー。
ケアレスミスの類だが、127バイト以上の距離のジャンプとかもしちゃいそうだ。
8086のセグメントに慣れてると正直「やってられっかぁ!」って言うレベルにかったりー
- 828 :ナイコンさん:2016/04/30(土) 21:29:11.25 .net
- >いちいちPCとってきて計算してとかかったりー。
>ケアレスミスの類だが、127バイト以上の距離のジャンプとかもしちゃいそうだ。
マクロアセンブラ知らんのかな?
- 829 :ナイコンさん:2016/04/30(土) 21:31:49.77 .net
- >>816-817
言い訳してるところ申し訳ないけど、システムかなんか知らんけど固定番地のルーチンが必要なんだよね?
それさえ認めてくれればあとはどうでもいいよ
- 830 :ナイコンさん:2016/04/30(土) 21:38:35.37 .net
- >言い訳してるところ申し訳ないけど、システムかなんか知らんけど固定番地のルーチンが必要なんだよね?
番地固定のナントカなんてどんなシステムにもあると思うけどそれ言うと言い訳になるのかな? 理解できない話だな
- 831 :ナイコンさん:2016/04/30(土) 21:40:01.94 .net
- >>829
固定番地が完全に排除されたシステムってなんか例挙げてちょ 5個くらいでいいよ
- 832 :ナイコンさん:2016/04/30(土) 21:52:26.66 .net
- >>829
もちろん必要だよ。当然だね。どこにアロートされたか分からんものを呼びようがないからね。
アドレス管理してるところは固定じゃないと間接的に呼びようがない。当たり前だね。
- 833 :ナイコンさん:2016/04/30(土) 21:59:45.80 .net
- >>828
マクロアセンブラなら128バイト以上の距離の相対ジャンプが自動的に作られるのかい?
- 834 :ナイコンさん:2016/04/30(土) 22:05:46.53 .net
- 絶対ジャンプのアドレスを自己書換でもしとけよ。
8086の条件ジャンプも128バイト以上飛べないし。そのときはどうやってるのかと。
- 835 :ナイコンさん:2016/04/30(土) 22:17:15.21 .net
- >>833
>マクロアセンブラなら128バイト以上の距離の相対ジャンプが自動的に作られるのかい?
そういうのが可能なマクロアセンブラは普通に存在するけどそれが何?
- 836 :ナイコンさん:2016/04/30(土) 22:30:35.28 .net
- > マクロアセンブラなら128バイト以上の距離の相対ジャンプが自動的に作られるのかい?
ジャンプ命令の最適化なんて8bitの頃のマクロのないアセンブラでもあった程度の機能だけどなあ? この人馬鹿なのかな?
- 837 :ナイコンさん:2016/04/30(土) 23:39:03.17 .net
- >>811
判りやすい資料をと思ったが御希望のようなので。
http://www.cpm.z80.de/manuals/cpm22-m.pdf 6-26
>>814
リスクを犯してまで使う必要は無いから素直に安全なRST 08H〜28Hを使うな。
ちなみにCP/M互換と言ってるMSX-DOSではRST 30Hには機能が与えられているから
覚えておいた方が良いよ。
- 838 :ナイコンさん:2016/04/30(土) 23:49:57.13 .net
- > ちなみにCP/M互換と言ってるMSX-DOSではRST 30Hには機能が与えられているから
> 覚えておいた方が良いよ。
インタースロットコールはMSX-DOSの機能じゃないぞ
- 839 :ナイコンさん:2016/04/30(土) 23:51:59.83 .net
- >>837
> 素直に安全なRST 08H〜28Hを使うな。
君の大好きなMSX-DOSのデバッガってCP/MのRST 38Hの代わりにその辺使ってね?
- 840 :ナイコンさん:2016/05/01(日) 01:12:38.29 .net
- >>838
手元のMSX-DOSの資料では
000CH JP RDSLT
0014H JP WRSLT
001CH JP CALSLT
0024H JP ENASLT
0030H JP CALLF (RST 30H)
とインタースロットコールをサポートしているが。
反論をするならば調べてからした方が良いよ。
- 841 :ナイコンさん:2016/05/01(日) 01:15:01.90 .net
- BIOSの機能とDOSのそれの区別がつかない人ねw
- 842 :ナイコンさん:2016/05/01(日) 01:46:05.98 .net
- BIOSのエントリなだけだよなあ。
MSX datapack volume1「第3部 MSX-DOS」見てもファンクションコールや
FCBの解説はあるけどインタースロットコールについては「BIOSと同じ」
以上の説明がないし。
- 843 :ナイコンさん:2016/05/01(日) 01:54:17.71 .net
- > ちなみにCP/M互換と言ってるMSX-DOSではRST 30Hには機能が与えられているから
> 覚えておいた方が良いよ。
「MSX-DOSではRST 30Hを使用しているから」だったら良かったのにね。
- 844 :ナイコンさん:2016/05/01(日) 02:03:36.77 .net
- ではMSX-DOSのシステムスクラッチエリア(CP/Mでの0ページに相当)に誰がUserの為に
わざわざインタースロットコールのエントリーアドレスを設定してるんだろうね?
MSX-DOSがその機能を提供するために設定してるんじゃないのかね?
- 845 :ナイコンさん:2016/05/01(日) 02:24:41.95 .net
- MSX-DOSって既にPC98+MS-DOS全盛時代だろ。おまえら貧乏だったんだな。
- 846 :ナイコンさん:2016/05/01(日) 02:42:26.02 .net
- 98、X68、FM-TOWNS、DOS/V機、全部持っててもMSX持ってるだけで貧乏人のレッテル貼られる時代。
- 847 :ナイコンさん:2016/05/01(日) 03:13:23.74 .net
- > ではMSX-DOSのシステムスクラッチエリア(CP/Mでの0ページに相当)に誰がUserの為に
> わざわざインタースロットコールのエントリーアドレスを設定してるんだろうね?
え? Userの為??
MSX-DOS自身がBIOS使うからに決まってるじゃん。Datapackにも書いてあるぞ?
- 848 :ナイコンさん:2016/05/01(日) 06:49:51.45 .net
- >>831-832
ごめんねー
システムの話しはしてないからそう言う反応はいらないっす
まあシステムの話しにしないと悔しくて眠れない
って言うのはわかったよ w
- 849 :ナイコンさん:2016/05/01(日) 07:24:05.33 .net
- なにしろ、持ってたマシンが日立のS1だったもんで・・・
- 850 :ナイコンさん:2016/05/01(日) 08:15:22.61 .net
- Z80なら無理してリロケータブルなコードを書くより、
最初にセルフリロケートを実行する方が良いんじゃないかな、
リロケート情報の分コードサイズが増えたとしても、
非効率なリロケータブルコードよりは小さくなりそうな気がするんだが。
もちろんOSのローダがやればそういう問題も無く、もっと良いんだけど。
- 851 :ナイコンさん:2016/05/01(日) 10:07:25.38 .net
- 機械語なんて単純なコードは勝手にリロケータブルになってんだろ。
- 852 :ナイコンさん:2016/05/01(日) 11:34:48.78 .net
- DIGITAL RESEARCH TM CP/M Operating System Manual
http://www.cpm.z80.de/manuals/cpm22-m.pdf
■317Page
PRL:
Page relocatable program. A page relocatable program is stored on disk with a PRL
filetype. Page relocatable programs are easily relocated to any page boundary and
thus are suitable for execution in a nonbanked MP/M system.
MP/Mは8ビットOSね。DESPOOLみたいなチャイルド系とかCP/M地震も再配置可能だったような。
- 853 :ナイコンさん:2016/05/01(日) 12:09:42.60 .net
- >>850
実行ファイルに、リローケション・テーブル付けてそれを元に再配置する
実際、それが歴史の答えだよ
Windowsの.exe / .dll 等もそういう仕組みになってる
セルフじゃなくて、リロケーション自体ははOSがやってくれるけど
ファイルにはリローケション・テーブルがくっ付いている。
Z80でPCさせ取得できれば、それ以外は目糞鼻糞の議論
結局、誰も提示出来ないようだな
- 854 :ナイコンさん:2016/05/01(日) 13:29:45.68 .net
- >>850
どんだけ周回遅れの話してんの?
- 855 :ナイコンさん:2016/05/01(日) 14:05:27.33 .net
- >>854
先頭横入り、ズルズル
- 856 :ナイコンさん:2016/05/01(日) 14:36:08.17 .net
- >>652
>それなら実行ファイルにコード本体とは別にリロケート情報を持って置いて、
>それを使ってローダーが再配置すれば解決する話だけどな。
- 857 :ナイコンさん:2016/05/01(日) 15:05:17.94 ID:PD909S4bN
- もう既出かもしれないが
ttps://groups.google.com/forum/#!msg/comp.os.cpm/hCIqluCYRGg/tlTDBE3QP50J
ttps://groups.google.com/forum/#!topic/comp.os.cpm/9BVctCgStB8
> LD HL,0E9E1h ;E1h=POP HL, E9h=JP (HL)
> LD (0008h),HL
> RST 08h
>REL0 EQU $
>
>Which would put the value of the PC into HL. The code could now
>be based relative to location REL0, for which the address would be
>in HL.
これ短くて好き。
- 858 :ナイコンさん:2016/05/01(日) 14:53:32.59 .net
- >>853
> Z80でPCさせ取得できれば、それ以外は目糞鼻糞の議論
Z80のIX、IYレジスタを使ってベースアドレスを渡せば、
>>707 必死こいてPC取得とかアホの極みだろw なんだそのコードw
とまで言えるくらい優れた方法があって、それを使えば
> 実行ファイルに、リローケション・テーブル付けてそれを元に再配置する 実際、それが歴史の答えだよ
そんなことをする必用も無くなる、
らしいんだよね、それが本当ならちょっと凄くね?
- 859 :ナイコンさん:2016/05/01(日) 14:56:28.83 .net
- > > Z80でPCさせ取得できれば、それ以外は目糞鼻糞の議論
>
> Z80のIX、IYレジスタを使ってベースアドレスを渡せば、
> >>707 必死こいてPC取得とかアホの極みだろw なんだそのコードw
> とまで言えるくらい優れた方法があって、それを使えば
>
> > 実行ファイルに、リローケション・テーブル付けてそれを元に再配置する 実際、それが歴史の答えだよ
> そんなことをする必用も無くなる、
>
> らしいんだよね、それが本当ならちょっと凄くね?
>>858がキチガイすぎて何言いたいんだかわからん
- 860 :ナイコンさん:2016/05/01(日) 15:01:38.79 .net
- 単にコードサイズ、速度の問題。再配置計算、ベースアドレス計算で比較するだけ。そんなの仕様による。
ベースアドレス渡しは根本的にできない連呼してた無能SEみたいに次々と後出し仕様ださないかぎり、
仕様が出ればがどっちが効率か判断できる。仕様、要件次第。
- 861 :ナイコンさん:2016/05/01(日) 15:15:22.27 .net
- >>859
ごめん、引用が多すぎて読みにくかったな、まとめると、
・渡されたベースアドレスを使ったリロケータブルコードは、自前でPCを取得して行うリロケータブルコードよりもかなり優れている
その手法を使えば
・リローケション・テーブルによる再配置をしなくても十分に効率的なコードを記述できる
ということみたいよ。
- 862 :ナイコンさん:2016/05/01(日) 15:23:45.60 .net
- >>861
> 渡されたベースアドレスを使ったリロケータブルコードは、自前でPCを取得して行うリロケータブルコードよりもかなり優れている
えっ誰かそんな馬鹿なこと言ってる? >>858にもそんなこと書かれてないよな?
> その手法を使えば
> ・リローケション・テーブルによる再配置をしなくても十分に効率的なコードを記述できる
えっ誰かそんな馬鹿なこと言ってる? >>858にもそんなこと書かれてないよな?(2回目)
結論: >>861は馬鹿
- 863 :ナイコンさん:2016/05/01(日) 15:39:05.96 .net
- >>860
ベースアドレス渡しは根本的に出来ない、
とは言われてなくて、
ベースアドレス渡しは根本的に「意味が無い」、なぜならPC取得とコードがほとんど変わらないから
と言われてる。
>>718 >>772 >>773 >>779 とか。
そもそもレジスタに入れれば良いだけなんだから「渡せない」とか意味不明。
仮にベースアドレスが渡されなくても、プログラムの先頭でPCを取得して、
そこから自前でベースアドレスを求めてレジスタに入れればいいだけなので渡す意味も特に無い。
さらに必用な都度PCを取得すればいいだけなので、ベースアドレスを保持して置く意味も無い。
- 864 :ナイコンさん:2016/05/01(日) 15:48:43.59 .net
- > さらに必用な都度PCを取得すればいいだけなので、ベースアドレスを保持して置く意味も無い。
レジスタに余裕があり、ベースアドレスからの相対アドレスを計算する
コストをある程度小さくしたいのであればベースアドレスを保持して置く
ことに意味はあるぞ。
- 865 :ナイコンさん:2016/05/01(日) 15:49:25.05 .net
- >>862
普通は馬鹿なことだと思うよね。
それが居るんだよ、ベースアドレス君とかベースアドレス爺とか呼ばれてる奴。
- 866 :ナイコンさん:2016/05/01(日) 15:51:21.98 .net
- >>865 こいつです。
- 867 :ナイコンさん:2016/05/01(日) 15:52:09.94 .net
- >>865
まだいたのか。恥ずかしくなって逃げたと思ってた。
- 868 :ナイコンさん:2016/05/01(日) 16:03:38.44 ID:PD909S4bN
- ld hl,pcか
add hl,pc
あたりを用意しておいてくれればよかったのにね。
- 869 :ナイコンさん:2016/05/01(日) 16:23:12.14 .net
- >>864
あらかじめ相対値としてPCからの相対値を持って置けば、
計算コストの面でもベースアドレスは必要ないと思うけど。
- 870 :ナイコンさん:2016/05/01(日) 16:24:56.15 .net
- >>732 のような恥を晒してものうのうと出来る、それが団塊というものです。
- 871 :ナイコンさん:2016/05/01(日) 16:43:46.74 .net
- >>869
システムコール等でPC値を取得するよりはレジスタに保存してある値を
参照する方がコストは低かろう。
- 872 :ナイコンさん:2016/05/01(日) 17:03:37.78 .net
- >>871
(11) RST 38H
0038:
(10) POP HL
(4) JP (HL)
計 (25)クロック
と
(15) PUSH IX
(10) POP HL
計 (25)クロック
だと速度に差は無いな、バイト数も前者の方が有利だね。
- 873 :ナイコンさん:2016/05/01(日) 17:10:57.26 .net
- (8) LD D, IXH
(8) LD E, IXL
計 (16)クロック
ならこっちの方が速いかな。バイト数は負けているが。
- 874 :ナイコンさん:2016/05/01(日) 17:16:57.37 .net
- (10) LD SP, IX
計 (10)クロック
一番速いのがこれかな。SPを使うのが玉に瑕だが。
- 875 :ナイコンさん:2016/05/01(日) 17:22:14.20 .net
- > (15) PUSH IX
> (10) POP HL
> 計 (25)クロック
> だと速度に差は無いな、
HL以外のレジスタにも対応できるという点では利点はあるね。
- 876 :ナイコンさん:2016/05/01(日) 17:30:23.54 .net
- >>873
それは未定義命令かな?
>>874
SPを使うのがありなら、SPは常にベースアドレス保持用に予約すれば
LD HL,MSG
ADD HL,SP
だけで実効アドレスを計算できるねw
- 877 :ナイコンさん:2016/05/01(日) 17:33:44.89 .net
- IX(かIY)をプログラムの先頭番地の格納に専用すると、プログラムの先頭付近を
データ領域に使用してそれへのアクセスを比較的低コストで行える、というのは
考えられるな。
- 878 :ナイコンさん:2016/05/01(日) 17:48:29.92 .net
- なにまだリロケータブルやってんの?
「リロケータブルなコードは書ける」でFAだろ。
モニタっつかOSの仕様までいちゃもんつけてまで「できねー」「かけねー」やってんの?
ところでさ、+127バイト以上の距離の「相対ジャンプ」ってどう実現するんだ?
マクロアセンブラとやらが展開した後のコードがちゃんと「リロケータブル」になってんの?
CP/MについてたASMしか使ったこと無いから想像付かん。
- 879 :ナイコンさん:2016/05/01(日) 17:51:12.41 .net
- こういうことだよね
JP (IX) IX:BASE_ADR
・・・・
DS 128
BASE_ADR:
JR ENTRY
DS 125
ENTRY:
ローカル変数としてアリっぽいけど、LD r,(IX+d) とか使ったら途端に
非難轟々になりそう。
- 880 :ナイコンさん:2016/05/01(日) 18:08:18.52 .net
- リロケータブルコードの場合データアクセスも難問なんだよな、
6809ならゼロページを普通に使えるが、
Z80だと(IX+n)(Z80最遅命令かと思われる)を使わざるを得ないんじゃないかな…
- 881 :ナイコンさん:2016/05/01(日) 18:17:42.95 .net
- >>878
多段ジャンプ。8086でも同じ。
- 882 :ナイコンさん:2016/05/01(日) 18:22:42.85 .net
- >>878
大抵はリロケータブルロングジャンプになるわけではなく、
JR Z,LONGJMP
が
JR NZ,SKIP
JP LONGJMP
SKIP:
になるだけじゃないかと、それでも無いよりは大分使いやすいと思うけどw
リロケータブルロングジャンプ自体はPC取得して〜で可能だろうから、
それをサポートした特殊なアセンブラが実在しなかったとも言い切れないが。
- 883 :ナイコンさん:2016/05/01(日) 18:40:19.71 .net
- ベースアドレスは渡せない言ってた糞ガキがまた暴れてるのか。
- 884 :ナイコンさん:2016/05/01(日) 18:46:15.17 .net
- 最後にはベースアドレス+相対位置の計算が必要で面倒で使えないという理由だったみたい。
- 885 :ナイコンさん:2016/05/01(日) 18:55:18.20 .net
- え? レジスタ一個消費するからダメって言ってたよ。
- 886 :ナイコンさん:2016/05/01(日) 19:02:07.24 .net
- 相対ロングジャンプ(全レジスタ、フラグを保存)
PUSH HL
RST 38H ;HL←PC
L1:
PUSH AF
PUSH DE
LD DE,LONGJMP - L1
ADD HL,DE
POP DE
POP AF
EX (SP),HL
RET
で良いかな?
- 887 :ナイコンさん:2016/05/01(日) 19:52:21.49 .net
- 相対ロングコール(全レジスタ、フラグを保存)
>>731 への答え版
Entry:
...
PUSH HL
PUSH IX
POP HL ;HL←ベースアドレス
PUSH AF
PUSH DE
LD DE,RETADDR - Entry
ADD HL,DE
POP DE
POP AF
EX (SP),HL ;戻りアドレスをスタックへ積む(同時にHLを復帰)
PUSH HL
PUSH IX
POP HL ;HL←ベースアドレス
PUSH AF
PUSH DE
LD DE,L1 - Entry
ADD HL,DE
POP DE
POP AF
EX (SP),HL ;呼び出しアドレスをスタックへ積む(同時にHLを復帰)
RET ;呼び出しアドレスへジャンプ
RETADDR:
...
L1:
...
ret
- 888 :ナイコンさん:2016/05/01(日) 19:54:08.16 .net
- >>880
普通にスタックフレームを使ってもいいし、いかようにでも。
>>879
125じゃなくて126までいけるか
- 889 :ナイコンさん:2016/05/01(日) 20:20:32.89 .net
- 簡単に書けるって言っちゃった割には出てきたコードが >>732 w
もうできるできないにするしかなくて必死になってるだけだろ
> マクロアセンブラとやらが展開した後のコードがちゃんと「リロケータブル」になってんの?
これは俺も興味あるわ
そんな賢いアセンブラあったっけ?
- 890 :ナイコンさん:2016/05/01(日) 20:21:48.55 .net
- >>889
どした? 急に思い出したように興奮してからに。
- 891 :ナイコンさん:2016/05/01(日) 20:39:23.86 .net
- http://hanabi.2ch.net/test/read.cgi/i4004/1458450955/467
> キミは歴史を勉強する気があるのかないのかどっちだ? ないなら出て行け。
- 892 :ナイコンさん:2016/05/01(日) 20:42:43.99 .net
- 他スレでも馬鹿にされたのか。落ち着けよ。
- 893 :ナイコンさん:2016/05/01(日) 20:58:23.45 .net
- >>878
cp/mのasm.comはアブソリュートアセンブラ。m$のMacro80とかはアセンブラとリンカーに
分かれている二段構成。Intel謹製のアセンブラはM$のリンカーの先にロケーターという
絶対番地コードに落とすユーティリティがあって、いわゆるHEXファイルを生成しロムライター
にダウンロードしてロム焼きする。いずれにせよ、アセンブラが吐き出すコードは中間コード。
ラベルに対応するアドレスはリンカ或いはロケーターを通すまで決定されない。それゆえ
リ・ロケータブルだと言われてた。
- 894 :ナイコンさん:2016/05/01(日) 22:15:00.61 .net
- 出来ることを証明するのは簡単だけどできないことを証明するのは容易ではないから
できると主張してる人が先に証拠を出すべき
- 895 :ナイコンさん:2016/05/01(日) 22:33:58.58 .net
- ここにもレス乞食が
- 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呼出しだめ、アドレス渡しだめ、というなら、それは「絵の具も筆も使わずにキャンパスに絵を描け」と言ってるに等しい、ただの言いがかりだ。
- 897 :ナイコンさん:2016/05/02(月) 12:19:33.26 .net
- つまりできないってことでいいのかな?
- 898 :ナイコンさん:2016/05/02(月) 12:56:54.56 .net
- 「完全リロケータブル」の定義がないから言い逃れはいくらでもできるのです(キリっ!
- 899 :ナイコンさん:2016/05/02(月) 13:16:12.62 .net
- >>896
LD A,(im16)
は
PUSH HL
LD HL,im16
LD A,(HL)
POP HL
と、その6種類を使わないコードに置換できるけど、
そうしたところでリロケータブルにはならないよ。
- 900 :892:2016/05/02(月) 13:24:55.18 .net
- >>899
前後の流れでの位置依存までは頭になかった。
LD HL,im16
の時点でim16がPC相対なりOSから渡されたベースアドレスからの相対なら、
LD A,(HL)
ではリロケータブルと言う発想しかなかったんで。
> 種類の命令が使われてなければ、それは「完全にリロケータブルなコード」だ
が間違っていると言うか、不十分だったかぁ。
うぅむ、「リロケータブルなコード」にするためには除外しなきゃいけないものが他にもありそうだなぁ。
- 901 :ナイコンさん:2016/05/02(月) 13:55:36.19 .net
- >>896
> このたった6種類の命令が使われてなければ、それは「完全にリロケータブルなコード」だ、メモリ上のどこにおいてもOK。
なるほど
ret
は確かにリロケータブルだな
お前賢いな w
- 902 :ナイコンさん:2016/05/02(月) 14:00:15.37 .net
- >>896
要するに
> OS呼出しだめ、アドレス渡しだめ
なら、書けないんだろ
- 903 :ナイコンさん:2016/05/02(月) 14:11:10.93 .net
- > 要するに
>> OS呼出しだめ、アドレス渡しだめ
>なら、書けないんだろ
そこまで言ったら、世の中全て、どんなCPUであろうとリロケータブルのコードが書けないことになる。
「リロケータブルではない」「リロケータブルである」の条件決めないままできないできない言ってるのは、ただのいちゃもん。
チンピラの所業だね。
そもそも「う゛〜!ボクチンの意見否定する奴ゆ゛る゛せ゛ね゛ぇ゛!」って後だしばっかしてる低脳だけだし、できないとかほざいてるの。
- 904 :ナイコンさん:2016/05/02(月) 14:38:21.23 .net
- 効率度外視すれば
1. 実行中のPCの値を取得
2. その値に対してオフセット計算する
3. 計算されたアドレスのメモリーに対して読み書きする
4. 計算されたアドレスにジャンプする(PCに代入する)
の機能があればリロケータブルなコードは書けるだろ
Z80 は
> OS呼出しだめ、アドレス渡しだめ
なら 1. を実現できないってだけのこと
- 905 :ナイコンさん:2016/05/02(月) 15:06:08.93 .net
- >効率度外視すれば
これはコーディング時に大層な負担が掛かるのでは。
そんな努力を払ってまでリロケータブルなコードを
書かなきゃイケナイのか。
- 906 :ナイコンさん:2016/05/02(月) 15:11:59.52 .net
- >>904-905は馬鹿
- 907 :ナイコンさん:2016/05/02(月) 15:12:30.99 .net
- 別に書かなくていいよ。世の中はにレジスタ一つ使っただけで絶望してもう書けないなんて言う人もいるぐらいだし。
キミは無理しなくていい。
- 908 :ナイコンさん:2016/05/02(月) 15:19:53.56 .net
- >以後の条件後出しは許さん。
Z80基準を8080基準にしてちょ。
- 909 :ナイコンさん:2016/05/02(月) 15:27:58.82 .net
- >>905
それは書ける書けないとは別の話
>>906
馬鹿としか書けないなら黙ってろ
- 910 :ナイコンさん:2016/05/02(月) 16:37:50.20 .net
- >>909は阿呆
- 911 :ナイコンさん:2016/05/02(月) 19:13:47.58 .net
- >>905
その一例が >>887 だ
- 912 :ナイコンさん:2016/05/02(月) 19:46:00.52 .net
- ここの住人は3つのタイプがいる。
ひとつはリロケータブルなコードは書けないと言うキチガイ。
ひとつはリロケータブルは簡単に書けると言うニワカ。
ひとつは、書けるが面倒くさいと言う正常な感性の持ち主。
- 913 :ナイコンさん:2016/05/02(月) 19:48:46.09 .net
- >>911
64Kbという枠組み(領域)の中で、そこまで苦労して
コーディングする必要は感じない。
- 914 :ナイコンさん:2016/05/02(月) 19:56:48.04 .net
- わいわいやってたのは、可能か不可能か、だよ。
現実的か現実的ではないか、なんて最初から非現実的と言うのばかりだろ。
違うのは不可能キチガイと簡単ニワカだけ。
- 915 :ナイコンさん:2016/05/02(月) 20:04:09.14 .net
- >わいわいやってたのは、可能か不可能か、だよ。
バカだなあ。
そんな事の前に、コーディングしてて楽しいかどうかも
考えられないなんて。
オレは御免だね。
- 916 :ナイコンさん:2016/05/02(月) 20:09:10.64 .net
- バカはあんただらずwww。
最初から非現実、つまり面倒くさいとか手間ばっかりとか、否定的な意見ばかりだ。
少しばかりスレ見れば分かる事にいちいち肯定しながらバカとか、間抜けすぎだずら。
- 917 :ナイコンさん:2016/05/02(月) 20:21:13.46 .net
- 連休中に決着つきそうもねえな
- 918 :ナイコンさん:2016/05/02(月) 20:32:33.46 .net
- >>886 >>887 にインスパイア()されたので、ニワカもパズル再挑戦しようとしたんだが…
全レジスタ・フラグ保存版
RST 38H
DEFW SUB1-LABEL1
LABEL1: NEXT_OP
SUB1:
RET
0038: JP RELCALL
RELCALL: PUSH HL
PUSH AF
PUSH DE
PUSH IX
LD IX,0
ADD IX,SP
LD L,(IX+8)
LD H,(IX+9)
LD E,(HL)
INC HL
LD D,(HL) ; DE:16bit リラティブ
INC HL
LD (IX+8),L ; リターンアドレス補正
LD (IX+9),H
ADD HL,DE
POP IX
POP DE
POP AF
EX (SP),HL
RET
うーん、単なる力ずくw ニワカなのでそろそろ無い命令を踏んでるやもしれず…
モデルは6809の LBSR 命令。雰囲気は出たのでこれでいいか。
- 919 :ナイコンさん:2016/05/02(月) 21:06:56.26 .net
- 決着もなにも、最初から結論出てるって言うか、実務経験あれば常識の範疇なのに
違うという不可能クンと簡単クンが粘着してるだけよ?
- 920 :ナイコンさん:2016/05/02(月) 21:33:26.67 .net
- >>915
>>887 をマクロにでも登録すれば? サクサク書けて楽しいよ
- 921 :ナイコンさん:2016/05/02(月) 21:43:22.52 .net
- ↑ ↑ ↑
粘着し過ぎ
- 922 :ナイコンさん:2016/05/02(月) 21:52:32.33 .net
- 可能か不可能かといえば可能。
簡単か面倒かはスキルの差でしかない。
不可能 → アセンブラ知らない知ったかの詐欺師
可能だが面倒 → 馬鹿
可能だし朝飯前 → 天才
- 923 :ナイコンさん:2016/05/02(月) 22:07:53.27 .net
- 可能っていう奴がいる割にはまともな例が出てこない不思議
- 924 :ナイコンさん:2016/05/02(月) 22:10:02.28 .net
- コード出せ厨 → アフィカス
- 925 :ナイコンさん:2016/05/02(月) 23:05:32.77 .net
- >バカはあんただらずwww。
8080、Z80でのコーディングなんて面白みが
無いからね。
そんなコードを見て「得意に」なられても
苦笑しか涌かないんだが。
- 926 :ナイコンさん:2016/05/03(火) 00:06:20.66 .net
- >>925
お前このスレで何したいの?
- 927 :ナイコンさん:2016/05/03(火) 04:10:43.09 .net
- > 簡単か面倒かはスキルの差でしかない。
こいつこそが「アセンブラ知らない知ったかの詐欺師」だな。
- 928 :ナイコンさん:2016/05/03(火) 06:16:39.58 .net
- コードも出さずにうだうだ言ってる奴見たら >>732 ですらまともに見えてきた w
- 929 :ナイコンさん:2016/05/03(火) 07:24:04.00 .net
- いっそのこと、OS側で
0038: JP EMU6809
EMU6809:
; 6809 emurator
...
として、
ユーザープログラムは6809アセンブラで
DEFB $ff
ENTRY:
と書いてけばいいんじゃね?
- 930 :ナイコンさん:2016/05/03(火) 08:18:41.84 .net
- >>928
コード出せとか必死な奴って、ガチャゲーにレア出せと大金ぶっ込んでるアホと同類。役立たず
- 931 :ナイコンさん:2016/05/03(火) 08:21:42.42 .net
- 天才現る
- 932 :ナイコンさん:2016/05/03(火) 08:40:33.14 .net
- >>930
たまに >>732 のような大物も釣れるから案外馬鹿に出来ない
- 933 :ナイコンさん:2016/05/03(火) 08:41:45.41 .net
- >>929
究極はそう言うことだからシステム云々言ってる奴は単なるアホか必死すぎる奴
そこまでやらなくてもロード時にリロケーションするようなルーチン呼び出せば実用的には問題ないだろうしね
- 934 :ナイコンさん:2016/05/03(火) 08:45:00.40 .net
- >>930
ガチャってやったことないから 何を言ってるのかさっぱりわからん
まあ必死なのはわかったよ w
- 935 :892:2016/05/03(火) 12:40:06.88 .net
- 再挑戦するのは正直自己満足に過ぎないんだけど、やるだけやってみた。
まず>>896に書いた3つの条件はそのままとする。
あとここでいう「ユーザープログラム」は>>896で言ってる「一連りの〜からなるユーザープログラム」のことね。
・CALL im16 、JP im16 、JP cc,im16 、LD (im16),r 、LD r,(im16) 、RST x の6種類の命令を含まない。
892の時には意識してなかったからCALLでファンクションコールきないトラップになってる。
・ユーザプログラムに含まれるデータに対する処理で指定するアドレスはベースアドレス相対、PC相対等で求め固定値を使わない。
ADC r,(r16)、ADD r,(r16)、AND (r16)、BIT b,(r16)、CP (r16)、DEC (r16)、INC (r16)、
LD (r16),n、LD (r16),r、LD r,(r16)、OR (r16)、RES b,(r16)、RL (r16)、RLC (r16)、
RR (r16)、RRC (r16)、SBC r,(r16)、SET b,(r16)、SLA (r16)、SRA (r16)、SRL (r16)、
SUB (r16)、XOR (r16)
以上アルファベット順に23種類(のハズ)。
rは8ビットレジスタ、r16は16ビットレジスタ(IX+d)は分けて書くのが面倒だったんでHLとニアリイコールと考えr16に含めた。
(本文長いと怒られたので分割)
- 936 :892:2016/05/03(火) 12:40:41.89 .net
- (続き)
・ユーザプログラム内にジャンプする命令で指定するアドレスはベースアドレス相対、PC相対等で求め固定値を使わない。
JP (r16)および複数命令組み合わせで同様機能を実現する場合(ちょっと考えたけどEX (SP),r16してRETするしか思い浮かばなかった)
・上記の「ベースアドレス相対、PC相対等で求め」はコード実行時に実現できていればどのタイミングで求めるか限定しない。
条件だけ抜き出してみたけどこれの縛りで書かれたコードは、どこに配置してもちゃんと動く。
実際こんな無茶な要求がされることはまず無いけどパズルとして要求仕様風に考えてみた。
まだ抜けてるところがあるかもしれないけど「リロケータブルのコードは書ける」の証明にはなるでしょ。
実は「つっこみしてくるかな〜」と少しばかり期待して、リロケータブルなコードに「含まれない」データへの参照についてはワザと書かなかったけどスルーされたね。
- 937 :ナイコンさん:2016/05/03(火) 14:20:05.42 .net
- 歌丸 : 山田くん座布団全部持って行って
- 938 :ナイコンさん:2016/05/03(火) 18:26:27.11 .net
- これが歌丸師匠の最後の笑点になるとは...
- 939 :ナイコンさん:2016/05/03(火) 19:03:28.99 ID:zdDB/ZTdY
- ルーチンの頭で自分と同じ内容を
0000からffffまで探して見つけるというのはどうだろう。
- 940 :ナイコンさん:2016/05/03(火) 22:04:47.49 .net
- 死んだの?
- 941 :ナイコンさん:2016/05/03(火) 22:14:44.16 .net
- 勝手に殺しちゃダメだって。
引退だよ。
- 942 :Office & Gamers @ 試験運用中(トリなしw:2016/05/04(水) 03:16:34.62 .net
- …このスレ的にはZ80リロケータブルしか引っ張るネタがないからなw
MZ-80K全盛期(1980年頃)にI/O、ASCIIでリロケータブルプログラミングはチラッと
出てるけど、テープベースでリローケータブルをやる意味がなかったようで、すぐに
この話題は消えたなw
MZ-80K全盛期w
今から36年前w
まだ生まれてないイキモノの方が多いw
- 943 :Office & Gamers @ 試験運用中(トリなしw:2016/05/04(水) 03:20:23.43 .net
- んで、1980年と言うと、MZ-80K用のテープベースのエディタアセンブラーが2万円w
これを買えるのは一部の富裕層で、普通の民間人はハンドアセンブル必須w
- 944 :ナイコンさん:2016/05/04(水) 08:23:53.83 .net
- んでZ8リロケータの完璧な実例まだ?
- 945 :ナイコンさん:2016/05/04(水) 08:53:08.77 .net
- > テープベースでリローケータブルをやる意味がなかったようで、すぐに
> この話題は消えたなw
> んで、1980年と言うと、MZ-80K用のテープベースのエディタアセンブラーが2万円w
> これを買えるのは一部の富裕層で、普通の民間人はハンドアセンブル必須w
これだけ分かっててリロケータブルのメリット理解してないってアホだわ。
- 946 :Office & Gamers @ 試験運用中(トリなしw:2016/05/04(水) 09:01:02.04 .net
- もはや化石でしかないZ80に何を求めてるのか知らないけどさw
- 947 :Office & Gamers @ 試験運用中(トリなしw:2016/05/04(水) 09:03:33.35 .net
- MZ-80K全盛期からハンドアセンブル一筋でやってきたとすれば、今頃MenuetOSの作者と同じ境地だろうなw
当時の世代はx86に移ってるよw
- 948 :ナイコンさん:2016/05/04(水) 10:20:14.06 .net
- >>945
> これだけ分かっててリロケータブルのメリット理解してないってアホだわ。
どう見ても関係なさげなんだがメリットあると言うなら説明してほしいわ
- 949 :ナイコンさん:2016/05/04(水) 10:47:38.31 .net
- >>948
おいおい、それを明らかにしてしまうと、
ここ一週間の熱い議論が無駄になってしまうと思うぞ。
- 950 :ナイコンさん:2016/05/04(水) 11:01:58.52 .net
- >>949
知的好奇心の無い奴にはナニ言っても無駄だよw
- 951 :Office & Gamers @ 試験運用中(トリなしw:2016/05/04(水) 11:10:03.67 .net
- >>949
おまえの独り言に付き合うアホはいないよw
- 952 :ナイコンさん:2016/05/04(水) 11:39:21.05 .net
- DLLのように動的にロードして使うコードならリロケータブルの方が便利だな。
メインアプリの都合にあった位置にロードすることが出来るし、
AとB、2つのDLLを同時に使いたいとき等も問題が出ない。
その場合でもローダーがリロケートすればいいので、リロケータブルなコードである必要は無いが。
- 953 :Office & Gamers @ 試験運用中(トリなしw:2016/05/04(水) 11:44:23.91 .net
- テープで動的にリロードする時代なんてなかったよw
- 954 :ナイコンさん:2016/05/04(水) 11:54:13.78 .net
- テープ時代ならMZ80Kのセルフリロケータブルデバッガは良く使った。
メモリの先頭で動くプログラムもあれば、
BASICとの共存を考えてメモリの末尾で動くプログラムもあり、
リロケートできるデバッガーは便利だった。
- 955 :ナイコンさん:2016/05/04(水) 12:45:03.41 .net
- OS自体がドライバ組み込みやメモリーの切り貼りに対応してないとバイナリが疑似リロケートでも大変だわな
- 956 :ナイコンさん:2016/05/04(水) 14:41:33.50 .net
- 大変だな、面倒な、無理だな、 →こいつずっとこればっかだなw
- 957 :Office & Gamers @ 試験運用中(トリなしw:2016/05/04(水) 14:42:33.99 .net
- >>954
そんな便利なモンなかったぞw
歴史をクリエイトするのはやめようなw
- 958 :ナイコンさん:2016/05/04(水) 15:09:29.74 .net
- >>957
雑誌(1980年11月号のI/O)に掲載された奴ね。
一応スクショもあった、あんまり意味が無いけどw
http://coolrip.b.ribbon.to/ueno.cool.ne.jp/magicallogic/MZ80KC11.HTM
↑の一番下の画像
- 959 :Office & Gamers @ 試験運用中(トリなしw:2016/05/04(水) 15:39:36.87 .net
- >>958
それデバッガ本体がリロケータブル名乗ってるだけで何の意味もないぞw
- 960 :ナイコンさん:2016/05/04(水) 15:41:30.75 .net
- にわかだろ
- 961 :ナイコンさん:2016/05/04(水) 15:44:00.99 .net
- 死ねよ
- 962 :Office & Gamers @ 試験運用中(トリなしw:2016/05/04(水) 15:45:31.41 .net
- さあ笑う用意をしよう♪(アハ♪”
- 963 :ナイコンさん:2016/05/04(水) 15:59:04.12 .net
- >>959
単純なアルゴリズム
(多分逆アセンブルしつつ16ビット即値がアドレスの範囲内ならオフセットを加算するだけ?)
のリロケート(メモリコピー&パッチ当て)コマンドが付いてて、
デバッガー自身はそれで「正常に」リロケートできるようになってた。
そのアルゴリズムだと全てのプログラムを確実にリロケートできるわけではないけど、
ハンドアセンブルした自作のプログラム程度なら、
「リロケートした後、逆アセンブラで確認して、リロケートに失敗してるところがあれば手で直す」
という手順で手間を省く手段にはなった。
- 964 :ナイコンさん:2016/05/04(水) 17:43:42.41 .net
- >>948
>どう見ても関係なさげなんだがメリットあると言うなら説明してほしいわ
小さいサブルーチンちまちま作ったうえでそれ呼び出す形で大きいプログラム作ること想像してみ。
それか↓でも読んで勉強すれ。
https://ja.wikipedia.org/wiki/%E4%BD%8D%E7%BD%AE%E7%8B%AC%E7%AB%8B%E3%82%B3%E3%83%BC%E3%83%89
- 965 :ナイコンさん:2016/05/04(水) 17:46:35.97 .net
- > それデバッガ本体がリロケータブル名乗ってるだけで何の意味もないぞw
どんな番地に配置されるプログラムをデバグするとも限らないからデバガが
リロケータブルなのは普通に意味があるんだよなあ、ニワカは馬鹿だから
理解できないかもしれんが。
- 966 :ナイコンさん:2016/05/04(水) 17:47:15.16 .net
- 掛け算ルーチンとかそうだよな。
- 967 :Office & Gamers @ 試験運用中(トリなしw:2016/05/04(水) 17:58:50.31 .net
- >>963
あのな、その頃はGAME-MZとFORMが流行っててマシン語なんか誰もやらなかったんだよw
- 968 :Office & Gamers @ 試験運用中(トリなしw:2016/05/04(水) 18:14:48.48 .net
- Windows版F1スピリットでもどうぞw
http://www.braingames.getput.com/f1spirit/default.asp
- 969 :Office & Gamers @ 試験運用中(トリなしw:2016/05/04(水) 18:16:48.62 .net
- http://www.braingames.getput.com/f1spirit/pics/screenshot1.jpg
http://www.braingames.getput.com/f1spirit/pics/screenshot2.jpg
http://www.braingames.getput.com/f1spirit/pics/screenshot3.jpg
http://www.braingames.getput.com/f1spirit/pics/screenshot4.jpg
http://www.braingames.getput.com/f1spirit/pics/screenshot5.jpg
http://www.braingames.getput.com/f1spirit/pics/screenshot6.jpg
http://www.braingames.getput.com/f1spirit/pics/screenshot7.jpg
http://www.braingames.getput.com/f1spirit/pics/screenshot8.jpg
うはwwww”
- 970 :ナイコンさん:2016/05/04(水) 19:14:46.39 .net
- >>964
> 小さいサブルーチンちまちま作ったうえでそれ呼び出す形で大きいプログラム作ること想像してみ。
え〜っと、リンカーも知らないアホ
って言うことでいいですか? w
あとその Wikipedia は位置独立コードとリロケータブルコードを別のものとして扱ってるからちゃんと読まないと恥かくよ
- 971 :Office & Gamers @ 試験運用中(トリなしw:2016/05/04(水) 19:21:07.47 .net
- >小さいサブルーチンちまちま作ったうえでそれ呼び出す形で大きいプログラム作ること想像してみ。
つまり車輪の再発明かwwwwやめとけwwwwwwwwwwwwwうえっwwwwwwwwwwwwwww”
- 972 :ナイコンさん:2016/05/04(水) 19:57:06.08 .net
- ここ1週間の話題は、OSがメモリに展開するときに最終的に位置を決めて、一度展開したら場所を動かさない、という一般的で当たり前のWindowsやLinuxが当たりまえにやってることじゃない。
「OSがメモリに配置するときに、読み込んできたバイナリをそのまま展開する」という架空のOSでリロケータブルを実現する方法。
- 973 :Office & Gamers @ 試験運用中(トリなしw:2016/05/04(水) 20:11:55.43 .net
- はいっ、終わりっ♪(アハ♪”
- 974 :ナイコンさん:2016/05/04(水) 20:13:14.81 .net
- >>970
> え〜っと、リンカーも知らないアホ
> って言うことでいいですか? w
↓読んで内容理解できてる?
> テープベースでリローケータブルをやる意味がなかったようで、すぐに
> この話題は消えたなw
> んで、1980年と言うと、MZ-80K用のテープベースのエディタアセンブラーが2万円w
> これを買えるのは一部の富裕層で、普通の民間人はハンドアセンブル必須w
- 975 :ナイコンさん:2016/05/04(水) 20:13:57.24 .net
- >>970
> あとその Wikipedia は位置独立コードとリロケータブルコードを別のものとして扱ってるからちゃんと読まないと恥かくよ
Wikipedia の記事に書かれてる
> リロケータブルコードは、指定されたアドレスで実行可能にするために
> リンケージエディタやローダが特別な処理を施すが、位置独立コードでは
> それが不要である。
読めて内容理解できてる?
- 976 :Office & Gamers @ 試験運用中(トリなしw:2016/05/04(水) 20:16:34.30 .net
- 糞スレ埋め立て開始♪(アハ〜っ♪”
- 977 :ナイコンさん:2016/05/04(水) 20:16:48.66 .net
- >>972
> 「OSがメモリに配置するときに、読み込んできたバイナリをそのまま展開する」という架空のOSでリロケータブルを実現する方法。
OS-9 も知らない知ったか君は黙ってなよ
- 978 :Office & Gamers @ 試験運用中(トリなしw:2016/05/04(水) 20:17:23.17 .net
- >Wikipedia の記事に書かれてる
他力本願wwwww”
- 979 :Office & Gamers @ 試験運用中(トリなしw:2016/05/04(水) 20:17:42.34 .net
- ほらっ♪ ほらっ♪”
- 980 :ナイコンさん:2016/05/04(水) 20:19:12.17 .net
- >>974
内容理解できてるけど、それがどうかしたのか?
>>975
理解できてるから、書いてあるんだが?
それも理解できてないのか?
- 981 :Office & Gamers @ 試験運用中(トリなしw:2016/05/04(水) 20:19:17.78 .net
- アハ♪ アハ♪”
- 982 :Office & Gamers @ 試験運用中(トリなしw:2016/05/04(水) 20:19:42.23 .net
- ヘーイ♪ 飛ばそうぜ〜♪(ギャハハ!!wwww”
- 983 :Office & Gamers @ 試験運用中(トリなしw:2016/05/04(水) 20:20:34.97 .net
- だがだが♪”
- 984 :Office & Gamers @ 試験運用中(トリなしw:2016/05/04(水) 20:20:53.29 .net
- よいこらしょっと♪”
- 985 :Office & Gamers @ 試験運用中(トリなしw:2016/05/04(水) 20:21:51.87 .net
- 980
- 986 :ナイコンさん:2016/05/04(水) 20:22:24.91 .net
- 次スレ
http://hanabi.2ch.net/test/read.cgi/i4004/1357048546/
- 987 :Office & Gamers @ 試験運用中(トリなしw:2016/05/04(水) 20:22:47.66 .net
- 982
- 988 :Office & Gamers @ 試験運用中(トリなしw:2016/05/04(水) 20:23:02.01 .net
- 983
- 989 :Office & Gamers @ 試験運用中(トリなしw:2016/05/04(水) 20:23:16.39 .net
- HGC
- 990 :Office & Gamers @ 試験運用中(トリなしw:2016/05/04(水) 20:23:49.30 .net
- 九八五♪”
- 991 :Office & Gamers @ 試験運用中(トリなしw:2016/05/04(水) 20:24:07.52 .net
- \[Y♪”
- 992 :Office & Gamers @ 試験運用中(トリなしw:2016/05/04(水) 20:24:39.92 .net
- HGF♪(亜波♪”
- 993 :Office & Gamers @ 試験運用中(トリなしw:2016/05/04(水) 20:25:18.01 .net
- 98
8
- 994 :ナイコンさん:2016/05/04(水) 20:28:48.63 .net
- クソコテw
こんなところで生き恥晒してないで、ベースアドレス爺と一緒に終活でもしろw
- 995 :Office & Gamers @ 試験運用中(トリなしw:2016/05/04(水) 20:29:24.38 .net
- 次スレ
2016: VICプログラマーをDarkGDKに移行させるスレ
http://hanabi.2ch.net/test/read.cgi/i4004/1460821051/
- 996 :Office & Gamers @ 試験運用中(トリなしw:2016/05/04(水) 20:29:43.17 .net
- 勝ったw
圧倒的に勝ったw
- 997 :ナイコンさん:2016/05/04(水) 20:29:55.72 .net
- >>974
> 内容理解できてるけど、それがどうかしたのか?
で、その時代にリンカがどうこう寝言言ってんの?
- 998 :Office & Gamers @ 試験運用中(トリなしw:2016/05/04(水) 20:30:11.73 .net
- 亜波♪”
- 999 :Office & Gamers @ 試験運用中(トリなしw:2016/05/04(水) 20:30:55.24 .net
- このスレの勝利者: 俺様♪(ペロリっ♪”
- 1000 :Office & Gamers @ 試験運用中(トリなしw:2016/05/04(水) 20:31:26.68 .net
- 敗北者: MZうyちゃーーーーーーん♪(ぎゃはは!!wwww”
- 1001 :ナイコンさん:2016/05/04(水) 20:31:36.52 .net
- >>975
> 理解できてるから、書いてあるんだが?
理解できてたら「あとその Wikipedia は位置独立コードとリロケータブルコードを別のものとして扱ってるからちゃんと読まないと恥かくよ」なんて恥ずかしいこと書けない罠。あの記事で書かれてる「位置独立コード」が何意味してるか分かっとらんだろお前。
- 1002 :Office & Gamers @ 試験運用中(トリなしw:2016/05/04(水) 20:31:44.76 .net
- 996
- 1003 :Office & Gamers @ 試験運用中(トリなしw:2016/05/04(水) 20:32:01.40 .net
- 998
- 1004 :ナイコンさん:2016/05/04(水) 20:32:11.11 .net
- またベースアドレス爺の負けかw
- 1005 :Office & Gamers @ 試験運用中(トリなしw:2016/05/04(水) 20:32:27.44 .net
- 1000ならDarkGDK移行♪(アハ♪”
- 1006 :2ch.net投稿限界:Over 1000 Thread
- 2ch.netからのレス数が1000に到達しました。
- 1007 :2ch.net投稿限界:Over 1000 Thread
- 2ch.netからのレス数が1000に到達しました。
総レス数 1007
237 KB
掲示板に戻る
全部
前100
次100
最新50
read.cgi ver.24052200