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

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

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

1 :ナイコンさん:2014/08/10(日) 15:25:26.31 .net
8086(8088)・Z80・6809・6502のうち、どのCPU(MPU)が優れているか議論するスレッドです。
CPU(MPU)アーキテクチャや周辺デバイス制御など
基本的に「石」に関連する議論なら、ほぼ何でもアリです。

■過去スレ
8086 vs. Z80 vs. 6809 vs. 6502 その9 (再び)
http://hello.2ch.net/test/read.cgi/i4004/1365951318/
8086 vs. Z80 vs. 6809 vs. 6502 その9 (短命)
http://ikura.2ch.net/test/read.cgi/i4004/1362833400/
8086 vs. Z80 vs. 6809 vs. 6502 その8
http://ikura.2ch.net/test/read.cgi/i4004/1333965297/
8086 vs. Z80 vs. 6809 vs. 6502 その7
http://ikura.2ch.net/test/read.cgi/i4004/1319314159/
8086 vs. Z80 vs. 6809 vs. 6502 その6
http://toki.2ch.net/test/read.cgi/i4004/1286766300/
8086 vs. Z80 vs. 6809 vs. 6502 その5
http://toki.2ch.net/test/read.cgi/i4004/1280380374/
8086 vs. Z80 vs. 6809 vs. 6502 その4
http://gimpo.2ch.net/test/read.cgi/i4004/1252639237/
8086 vs. Z80 vs. 6809 vs. 6502 その3
http://gimpo.2ch.net/test/read.cgi/i4004/1235851359/
8086 vs. Z80 vs. 6809 vs. 6502 その2
http://gimpo.2ch.net/test/read.cgi/i4004/1213527504/
8086 vs. Z80 vs. 6809 vs. 6502
http://bubble6.2ch.net/test/read.cgi/i4004/1165801265/
6809とZ80 part 2
http://bubble4.2ch.net/test/read.cgi/i4004/1093190685/
6809とZ80
http://bubble2.2ch.net/test/read.cgi/i4004/1008496410/

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
> サブルーチン番号を渡す必要あるのでレジスタがひとつつぶれる

> とても普通に書けるってレベルじゃないわな

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

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