8ビットCPUでC言語? ないないありえないっしょ! 3

1ナイコンさん2018/06/07(木) 00:31:12.73
【前スレ】
8ビットCPUでC言語? ないないありえないっしょ! [無断転載禁止]©2ch.net

Part.2 http://matsuri.5ch.net/test/read.cgi/i4004/1470913460/
Part.1 http://hanabi.2ch.net/test/read.cgi/i4004/1468652612/

     ♪    /.i   /.i  /.i
   ♪     ∠__ノ ∠__ノ ∠__ノ   
        〈,(・∀・;)ノ・∀・;)ノ・∀・;)ノ
         └i===|┘i===|┘.i===|┘  
           〈__〈 〈__〈 〈__〈

2ナイコンさん2018/06/07(木) 00:36:17.27
8ビットCPUでC言語? ないないありえないっしょ! 3
http://matsuri.5ch.net/test/read.cgi/i4004/1528299072/

次スレ立てる場合はスレタイ同一がお約束。なんでここは派生スレね。
以後、テキトーにどうぞ。

3ナイコンさん2018/06/07(木) 00:45:33.28
なんでここは派生スレね → なんでここが次スレね

4ナイコンさん2018/06/07(木) 02:03:07.80
『信長の野望・全国版』...前作『信長の野望』はBASIC言語で作られていたが、本作はC言語で開発された。
https://ja.wikipedia.org/wiki/信長の野望・全国版

ということなので、88版のDISK IMAGEから文字列をバイナリエディタで舐めてみた。容量552AF。
有意な文字列ほとんど無いが僅かながら"DISK I/O ERROR"みたいなエラーメッセージが24H($)で区切られて
いるので基本はたぶんCP/Mベースだろう。CP/MのOSファイルは無い。実際のところDOS自体はオリジナル。
”YDOS Ver2.2(58.5K) 15-Feb-85 I.YODA”というクレジットがある。この文字列は24Hなし。

5ナイコンさん2018/06/07(木) 11:37:40.10
wikipediaは嘘も多いからなんとも言えないけど
88版だと「%s様が病気になりました」なんかの文字列があるね
解析するとメモリの1183h〜あたりがprintfの処理かなぁ
LD HL, n
ADD HL, SP
ってコードが多いのがC言語っぽいけど
IXやIYがあまり使われてなさそうなのがコンパイラっぽく無いとも感じる
引数制限してるかグローバル変数使いまくりなんだろうか

6ナイコンさん2018/06/07(木) 22:47:16.58
88版なら漢字コードがJISかもしれないなぁ。
昔々すぎて詳細忘れたけどN88BASICで漢字のフォントデータ読み出す処理を書いたときにSJIS(N88BASICがSJISなので)からJISに変換したような覚えがなんとなくある。

7ナイコンさん2018/06/07(木) 22:48:12.50
>>6
あ、すまん、%s様が〜ってみえてるのか。
ならSJIS使ってるね。

8ナイコンさん2018/06/07(木) 23:39:37.17
> IXやIYがあまり使われてなさそうなのがコンパイラっぽく無いとも感じる

当時Z80の命令吐くコンパイラがどんだけあったと思ってる?

9ナイコンさん2018/06/08(金) 00:11:13.28
えすぷれっそまっすぃーーん

10ナイコンさん2018/06/08(金) 03:19:58.85
変態実装のprintf()はいくらメモリ食うと思ってんだ。
DOS時代でさえputs()使いましょうだったのに。

11ナイコンさん2018/06/08(金) 04:12:15.95
>>5
サンクス。HEXダンプして見ていたので、シフトJISダンプするの忘れていたわ。
FDイメージを単純にシフトJIS表示させると以下↓のごとくごそごそ出てきたわ。

蛎崎 津軽 南部 葛西 秋田 伊達 最上 結城 葦名 上杉 佐竹 宇都宮 里見 北条 ・ 嵩c 畠山 神保 姉小路
木曾 今川 本願寺 朝倉 斉藤 徳川 堀 c 北畠 浅井 六角 一色 波多野 足利 筒井 三好 堀内 山名 別所 尼子
宇喜多 毛利 十河 細川 河野 長宗・ 苺・一条 城井 竜造寺 大友 阿蘇 伊東 島津 明智 羽柴 柴田 慶広
為信 晴政 晴信 愛季 輝宗 義守 晴朝 盛氏 謙信 義重 広綱 義尭 氏政 信玄 義綱 氏張 自綱 義昌 義元 光佐 義景
義竜 家康 信長 具教 長政 義賢 義道 秀治 義昭 順慶 長 慶 氏善 豊国 長冶 晴久 直家 元就 存保 晴元 通宣
元親 兼定 鎮房 隆信 宗麟 惟将 義祐 貴久 光秀 秀吉 勝家 sコxココ・村仄本国 商業国

兵がおりまへん 兵がおらん 兵がおりもさん ;ニJニ[ニjニ{ニ竿僻民がおりやせん 民がおらんがいね 民がおりませぬ
民がおりゃあせん 民がおりまへん 民がおらん 民がおりもさん イト7ナエナ-ニセニフニムニヨニロニ猗衄・ニ地図表示区分
全国 東北 北陸 関東 中部 近畿 中国・四国 九州 ヌヌ&ヌ %ヌ.ヌ5ヌ属領地への
ありません。 可能国 菴・スス セセ一揆軍 一向宗 延暦寺派 海賊 キリシタン 謀反軍 第%d国 %d.%s

------
漢字コードがシフトJIS。ということは、シフトJISで対応のFEPとエディタ、コンパイラで開発していたことを意味する。
シフトJISの仕様策定は1982年らしいが、同年に9801が出荷開始されている。LSI Cは1984年には出荷されていたという話。
ジャストのATOKやメガソフトのMIFESは1985-86年には出そろっている。ということみたいだから、
1986年版の信長の野望全国版の8801版は9801のクロス環境で開発されていた。と考えるのが自然な推定であるような気がする。

12ナイコンさん2018/06/08(金) 04:52:53.96
>IXやIYがあまり使われてなさそうなのがコンパイラっぽく無いとも感じる

LSI-Cに限らず8bit対応C言語がどんなコードを吐き出すか俺は知らないのでなんとも言えないが、
CP/Mという世界は基本8080の世界でZ80とは実はあまり密接な関係には無いのね。というのも、
CP/Mはインテル謹製の8080/85開発装置のためにインテルから依頼されたコンサルのキルダールがインテルの金で
開発したOSで奇しくも非採用になったためにインテルから版権を得てキルダールが市販しはじめたもの。なので
バインドされていたASM.COMとかDDTや別売りのMAC/RMACみたいなDRIのアセンブラ類もインテルニーモニック対応。
インテルシンパなキルダールがザイログ軽視していたのはそのへんの「ビジネス」絡みだったのかも。
ここら辺がDRIが商売下手なところで、MACRO-80のMSにつけいる隙を与えてしまった。唯一の例外はZSIDくらい。
なので、CP/M80専用ソフトにZ80固有アーキテクチャのIX/IYに冷淡なコンパイラとかがあっても不思議は無いのね。
79年なBDS CがIX/IY無視バイナリでも不思議無いかもね。

それと、CP/M向けの言語とかエディタにはAND 7Fでサインビットをマスクして無理矢理7bitASCII対応していた
ソフトがけっこうあった。結果半角カナが扱えない。そういうソフトをDDTでディスアセンブルしてAND 7FHを探しだし
処理フローを類推しながらAND FFHとパッチして無理矢理カナを扱えるようにするみたいなことをやった覚えがある。

シフトJIS処理された信長の野望全国版のDOSが独自なYDOSベースなのはこのサインビット処理・シフトJIS対応の故なのだろうね

13ナイコンさん2018/06/08(金) 05:15:05.40
LSI-Cの開発者森公一郎氏はすでに他界されているが、
https://srad.jp/story/15/01/22/0423242/

東のLSIジャパンに対して、西のペンギンソフトみたいなところがある。84-85年頃、
京都のペンギンソフトがペンギンCなるものインタフェース誌で広告出して売り出していた。
それが何であるか長年謎だった。当時武蔵小杉近辺の某LSI開発者に86的C言語を探していた
オッサンがいて、彼に京都まで行ってみれば?と話したことがあったから。

と、そのペンギンCはどうやら6301対応のCコンパイラだったらしい。開発者は小窓次郎氏。
また公知販売の仕掛け人はペンギンの筒井氏。この筒井氏は超有名人。10年の後、
YahooBBのADSL網を推進完成させたSB中興の人。東大工学部→京大医学部卒。

小窓氏のブログでは6301用のCコンパイラのDOS版ソースとバイナリなどが公開されている。要リスペクト。
オリジナルの開発はDECのVAXとBSD。そういう時代だったですなあ。先端エンジニアはDEC使い。みたいな
当時開発言語それ自体を開発するためにVAXを使う。というのは。ちなみにCP/MやPL/MはPDP8。

Cコンパイラ開発顛末記
http://www.techno-web.org/e_techno/1999/11/03/cyyoynyyeeaeouaei/

小窓氏のブログは2011年で止まっている。世代的に70手前くらいか。ちょっと心配。

14ナイコンさん2018/06/08(金) 05:27:30.06
ちなみに、筒井氏が率いていたペンギンソフトは9801用スクリーンエディタであるペンギンエディタを
開発販売したていたことでも知られている。広告出していたからね。俺も知っている。
ファイル名がSEDだったかな。ワードマスターみたいなESCシーケンスエディタに慣れたユーザには
目鱗ものの高速エディタだった。これが後のMIFES,REDなどの原型。というのもペンギンソフト解散時に
エディタの開発者がそれぞれ著作権利ありと継続したのがMIFESとか諸々。らしい。伝聞だからね。

あの84-86年頃の関西は9801移行で名を馳せた会社がたくさん合ったが、人脈の源流は京都ペンギンなのだろうね。
カノープス:神戸 メガソフト:大阪 岩崎技研:京都 京都マイクロコンピュータ:京都

15ナイコンさん2018/06/08(金) 05:53:19.28
PC88のCP/M 2.2のDDT自体は8080のコードで書かれたらしいがZ80の命令を解釈してたなぁ。
パソコンだと8080よりZ80のが使われてたからデジタルリサーチも8080に拘る愚はしないでZ80対応するのが自然でしょ。
NECが自社のPC向けにローカライズしてたのかもしれないけど。

16ナイコンさん2018/06/08(金) 06:16:11.98
>>5
> IXやIYがあまり使われてなさそうなのがコンパイラっぽく無いとも感じる
IX, IYを使う命令は遅いからアセンブラで組む時もあまり使わない

17ナイコンさん2018/06/08(金) 10:26:37.12
IX,IY
ビット命令
裏レジスタ

使うと笑われるZ80の3大機能

18ナイコンさん2018/06/08(金) 11:15:59.55
HLと等価なら使い勝手良かったのにね

19ナイコンさん2018/06/08(金) 11:38:58.71
川鉄のやR800だと使わないほうが遅いかもしれん

20ナイコンさん2018/06/08(金) 12:52:44.71
>>17
適材適所だろ。
インデックスレジスタは、データ構造の作り方で不要に出来る場合が多いけど、使い所はある
裏レジスタも処理を整理していけば要らない場面が多々あるけど、やっぱり欲しい時あるじゃん
そんなこと言ってたら、X1の様なGRAMのアクセス方法だって邪道

21ナイコンさん2018/06/08(金) 19:17:53.43
>>20
だから適所が少なかったって話な
アセンブラでカリカリチューニングするならまだわかるけど当時のコンパイラにそこまで要求するのはものを知らなさすぎ

22ナイコンさん2018/06/08(金) 19:26:48.45
>>13
筒井氏開発のは南極ペンギンC なのね。86用。 6301用のC3POとは別。

23ナイコンさん2018/06/08(金) 19:30:46.77
> IX,IY
> ビット命令
> 裏レジスタ
>
> 使うと笑われるZ80の3大機能

笑ってるのは適所を理解せず脊髄反射してる馬鹿ってことだよなあ。

24ナイコンさん2018/06/09(土) 01:11:34.24
exxで裏レジスタを使って2コア相当のパフォーマンスですよ

25ナイコンさん2018/06/09(土) 18:55:35.97
float a = 0.0;
printf("%f",a);

これでバイナリサイズはいくらになりますか?

26ナイコンさん2018/06/09(土) 19:02:46.39
>>25
知りたきゃ手前で確認しろやカス

27ナイコンさん2018/06/09(土) 19:14:15.01
7KBでした。

28ナイコンさん2018/06/09(土) 22:18:35.34
光栄ソフトは開発言語、マニュアルに書いてなかったっけ?

29ナイコンさん2018/06/09(土) 23:01:44.53
載ってたわ8ビットは
LSI-C/イントロール・クロスCらしい

30ナイコンさん2018/06/10(日) 03:31:33.82
>>27
うそつけ。

31ナイコンさん2018/06/10(日) 12:27:05.34
で、floatとprintfでどれぐらいバイナリは膨れ上がるんだ?

32ナイコンさん2018/06/10(日) 12:29:36.88
というか、mallocはまともに使えるサイズなのか?

33ナイコンさん2018/06/10(日) 13:38:03.38

34ナイコンさん2018/06/10(日) 18:28:43.30
使い物にならない例ばかりだしやがって

35ナイコンさん2018/06/10(日) 20:26:53.11
【またカミカゼ暴走、群馬のスーパー、重傷9人】 放射能が原因だけど、国防上、トップシークレット?
http://rosie.5ch.net/test/read.cgi/liveplus/1528627781/l50

36ナイコンさん2018/06/11(月) 05:51:10.02
>>30
無料公開されたCP/M版のHI-TECH Cでコンパイルすると7168バイトになるね

37ナイコンさん2018/06/11(月) 06:08:10.26
ちなみに下記コードを同じHI-TECH Cでコンパイルしたら384バイトだった
(ただ、hogehogeを出力するだけのコード)

#include <cpm.h>
int main(int argc, char **argv) {
bdos( 9, "hogehoge\r$");
return 0;
}

38ナイコンさん2018/06/11(月) 06:12:33.96
同じく下記コードだと4224バイト

#include <stdio.h>
int main(int argc, char **argv) {
int a = 1234;
printf("%d",a);

return 0;
}

39ナイコンさん2018/06/11(月) 11:37:29.18
LSI C-80は、8080用コンパイラだから、オブジェクトで
IX,IYが使われないのは当たり前。

HI-TECH CはZ-80用コンパイラで、多分コード生成部以外は
他のCPU用と共用と思われるため、過剰とも思えるほど
インデックスレジスタを多用したコードを吐く。

40ナイコンさん2018/06/11(月) 12:00:07.44
現在のLSI C-80はIX使いまくりだから、はっきり8080コードを指定しないと遅くなりそうだ
https://www.lsi-j.co.jp/official/products/02/other/lsic80

41ナイコンさん2018/06/11(月) 15:53:42.16
>>38
ボクのMSXは8KBとしかメモリがありません。

42ナイコンさん2018/06/11(月) 17:22:47.39
39800円のMSX-CはLSI-Cのサブセット。
19800円のα-CはBDS-Cのサブセットとかいう噂らしいけど。
信長ってクロスのLSI-Cなんでそ?
プロの開発で8bitCPUでコンパイルはなかったのかね?

43ナイコンさん2018/06/11(月) 18:13:58.99
標準printfなんて馬鹿みたいにデカいからな

44ナイコンさん2018/06/11(月) 18:17:35.98
コンパイラ使っても結局生成コード確認してたし
(バグとか結構あったから)
BASE80とかの方が生産性高かったなぁ

45ナイコンさん2018/06/11(月) 20:23:34.62
それでもアセンブラでシコるよりC使ったほうが生産性が高かった。

8ビットでもインタプリタが載せられるようなリッチ?なシステムで仕事したかったわw

46ナイコンさん2018/06/11(月) 21:23:13.92
> 現在のLSI C-80はIX使いまくりだから、はっきり8080コードを指定しないと遅くなりそうだ

8080知らない人は面白いこと言うw

47ナイコンさん2018/06/11(月) 22:52:13.05
>>40 のリンクにある tarai 関数を 8080 にある命令をザイログニモニックで
吐く MSX-C 1.2 用に書き換えてコンパイルしてみた。
int
tarai(x, y, z)
int x;
int y;
int z;
{
if (x > y)
return tarai(
tarai(x - 1, y, z),
tarai(y - 1, z, x),
tarai(z - 1, x, y)
);
else
return y;
}

48ナイコンさん2018/06/11(月) 22:53:08.97
MSX.M-80 2.00 11-Jun-18 PAGE 1



; MSX-C ver 1.20p (code generator)

0000' cseg

0000' tarai@:
0000' E5 push hl
0001' D5 push de
0002' C5 push bc
0003' E5 push hl
0004' EB ex de,hl
0005' D1 pop de
0006' CD 0000* call ?CPSHD
0009' D2 0091' jp nc,@0
000C' E5 push hl
000D' 21 0002 ld hl,2
0010' 39 add hl,sp
0011' 71 ld (hl),c
0012' 23 inc hl
0013' 70 ld (hl),b
0014' E1 pop hl
0015' 4D ld c,l
0016' 44 ld b,h
0017' C5 push bc
0018' D5 push de
0019' CD 0000* call ?saut6
001C' D1 pop de
001D' 21 0002 ld hl,2

49ナイコンさん2018/06/11(月) 22:53:39.63
0020' 39 add hl,sp
0021' 4E ld c,(hl)
0022' 23 inc hl
0023' 46 ld b,(hl)
0024' 21 FFFF ld hl,65535
0027' 09 add hl,bc
0028' E5 push hl
0029' 21 0004 ld hl,4
002C' 39 add hl,sp
002D' 71 ld (hl),c
002E' 23 inc hl
002F' 70 ld (hl),b
0030' E1 pop hl
0031' C1 pop bc
0032' E5 push hl
0033' 21 0006 ld hl,6
0036' 39 add hl,sp
0037' 73 ld (hl),e
0038' 23 inc hl
0039' 72 ld (hl),d
003A' E1 pop hl
003B' CD 0000' call tarai@
003E' E5 push hl
003F' 21 0006 ld hl,6
0042' 39 add hl,sp
0043' 4E ld c,(hl)
0044' 23 inc hl
0045' 46 ld b,(hl)
MSX.M-80 2.00 11-Jun-18 PAGE 1-1

50ナイコンさん2018/06/11(月) 22:54:05.87
0046' 21 0002 ld hl,2
0049' 39 add hl,sp
004A' 5E ld e,(hl)
004B' 23 inc hl
004C' 56 ld d,(hl)
004D' D5 push de
004E' CD 0000* call ?laut6
0051' D1 pop de
0052' D5 push de
0053' CD 0000* call ?saut6
0056' D1 pop de
0057' 2B dec hl
0058' E5 push hl
0059' 21 0008 ld hl,8
005C' 39 add hl,sp
005D' 71 ld (hl),c
005E' 23 inc hl
005F' 70 ld (hl),b
0060' E1 pop hl
0061' E5 push hl
0062' 21 0004 ld hl,4
0065' 39 add hl,sp
0066' 73 ld (hl),e
0067' 23 inc hl
0068' 72 ld (hl),d
0069' E1 pop hl
006A' CD 0000' call tarai@
006D' E5 push hl
006E' 21 0004 ld hl,4
0071' 39 add hl,sp

51ナイコンさん2018/06/11(月) 22:54:37.11
0072' 4E ld c,(hl)
0073' 23 inc hl
0074' 46 ld b,(hl)
0075' C5 push bc
0076' 21 0008 ld hl,8
0079' 39 add hl,sp
007A' 5E ld e,(hl)
007B' 23 inc hl
007C' 56 ld d,(hl)
007D' 21 000A ld hl,10
0080' 39 add hl,sp
0081' 4E ld c,(hl)
0082' 23 inc hl
0083' 46 ld b,(hl)
0084' 21 FFFF ld hl,65535
0087' 09 add hl,bc
0088' C1 pop bc
0089' CD 0000' call tarai@
008C' D1 pop de
008D' C1 pop bc
008E' CD 0000' call tarai@
0091' @0:
0091' C1 pop bc
0092' C1 pop bc
0093' C1 pop bc
0094' C9 ret
MSX.M-80 2.00 11-Jun-18 PAGE 1-2

52ナイコンさん2018/06/12(火) 15:56:56.92
IX,IY便利だよ、ポインタ2セット抱えてINC L DEC Lちまちまやるのはただのアホ

53ナイコンさん2018/06/12(火) 18:59:25.98
ケースバイケース
>>52みたいに状況判断ができない奴が一番使えない

54ナイコンさん2018/06/12(火) 19:33:01.87
>>53
どんなケースでポインタ操作でIX、IYが不便になるんですか?

55ナイコンさん2018/06/12(火) 20:33:14.13
インデックスレジスタはでかくて遅いみたいに思うけど、
構造体っぽいデータをランダムアクセスしたい場合なんかは
HL や DE を駆使するより効率的だったな。
シーケンシャルな連続アクセスなら HL, DE レジスタの方がいいだろうけど。

56ナイコンさん2018/06/12(火) 20:43:38.16
>>54
実際にやってみればいろいろわかると思うよ
https://electrelic.com/electrelic/node/474

57ナイコンさん2018/06/12(火) 21:03:30.46
逃げたか。

58ナイコンさん2018/06/12(火) 21:17:24.43
リンク先も読めないバカ?

59ナイコンさん2018/06/12(火) 21:20:20.70
自分の言葉で説明せずに他人に○投げしたら「逃げた」と言われてもしかたないね。
実際逃げてるんだしw

60ナイコンさん2018/06/12(火) 21:59:27.29
とにかくバグを出さずそれなりに早く、そして8bit機なので省メモリなら何でもいいわ
遊びならアセンブラで組めよ。
仕事なら要件通り作れよってなる

61ナイコンさん2018/06/12(火) 21:59:56.70
>>56
Z80の特性理解しないでレジスタの扱いヘタクソなジジイがあれがダメこれがダメ言ってるだけのゴミ記事。

62ナイコンさん2018/06/12(火) 22:10:29.02
ダメ出しなんて馬鹿でもできるからな。
不可能を可能にするノウハウにこそ価値がある。

63ナイコンさん2018/06/12(火) 22:11:54.53
>>59
えっ?
俺がやるより分かりやすく説明してるから貼ってるんだけど
具体例出されたから反論できずに困ってる? w

64ナイコンさん2018/06/12(火) 22:12:40.69
>>61
はいはい w

65ナイコンさん2018/06/12(火) 22:41:15.86
>>63
>ADD IX,BC
>はできても
>ADD IX,HL
>はできないのです。

EX DE,HL
ADD IX,DE
EX DE,HL
とかやり様だしなあ、こんなんで「分かりやすく説明してる」ってアホかw

66ナイコンさん2018/06/12(火) 22:44:59.58
>未定義命令を使わない場合、よく使われたのは
>
>PUSH BC
>POP IX
>とスタックを経由する方法でした。これならHLからIYへの転送等も可能ですが、スタック(メモリ)を経由するのがちょっと気になります。

スタック使うのが気になるなら
LD IX,0
ADD IX,BC
とかするだけだがなあ、自分で提示した方法にケチつけることに何の意味があるんだろう?

67ナイコンさん2018/06/12(火) 22:49:47.21
>素直に書けばこんな感じになるでしょうか。
>
> 1: 0000 C5 PUSH BC
> 2: 0001 DDE5 PUSH IX
> 3: 0003 4F LD C,A
> 4: 0004 0600 LD B,0
> 5: 0006 DD09 ADD IX,BC
> 6: 0008 DD5600 LD D,(IX+0)
> 7: 000B DDE1 POP IX
> 8: 000D C1 POP BC

これはIX使うのが間違ってんだよなあ。
ADD A,L
LD L,A
ADC A,H
SUB L
LD H,A
LD D,(HL)

68ナイコンさん2018/06/12(火) 23:02:23.52
> 実際にやってみればいろいろわかると思うよ

わかってない奴が何偉そうにw

69ナイコンさん2018/06/12(火) 23:08:20.18
> えっ?
> 俺がやるより分かりやすく説明してるから貼ってるんだけど
> 具体例出されたから反論できずに困ってる? w

ワロタw

70ナイコンさん2018/06/12(火) 23:34:26.19
>>63
それを逃げって言うだろ、普通は。

71ナイコンさん2018/06/12(火) 23:35:21.32
>>65-66
> とかやり様だしなあ
> とかするだけだがなあ
そりゃそう言う言い方したらなんでもありありだわな
そう言うのは面倒だし、(当時は)コードサイズが膨れるのも嫌とかあるだろ

>>67
全然違うコードさらしてバカアピールか?

>>68-70
煽ることしかできないバカは黙っとけ

72ナイコンさん2018/06/12(火) 23:42:08.19
判りやすく説明するのが面倒だから他人に丸投げしました(キリッ!
ですね、立派な逃げです。

面倒から逃げるのはよくある事ですけど、逃げは逃げですw

73ナイコンさん2018/06/12(火) 23:54:52.86
具体例出されたら
逃げたー
しか言えなくなってて笑うわ

74ナイコンさん2018/06/13(水) 00:00:15.06
結局自分でコードも書けない素人だったというわけかw

75ナイコンさん2018/06/13(水) 00:04:53.96
>>74
自己紹介乙

76ナイコンさん2018/06/13(水) 00:05:17.42
他人様のページのアドレス貼って具体例と言ってドヤ顔かあ、ご立派なもんだなあ。

77ナイコンさん2018/06/13(水) 00:08:07.45
> 自己紹介乙

てめえが書いたコードも晒さずに何バカ言ってんだかw

78ナイコンさん2018/06/13(水) 00:29:56.38
なるほど。つまりC言語はスタック使いまくりだから使い物にならないのか。

79ナイコンさん2018/06/13(水) 00:31:36.30
8088や8086では簡単に出来ることをZ80では面倒なことをしないといけない
如何に8bit CPUが制限だらけかわかる

8088や8086はスタックアクセスにBPレジスタが用意されていて
スタック上のローカル変数へのアクセスが容易にできる
Z80は高級言語のことはあまり考慮されてないが
8088や8086は高級言語のことも考慮されてる設計

68000ならlink命令など、さらに高級言語が使いやすく出来てる

80ナイコンさん2018/06/13(水) 02:02:14.50
>>78
引数もローカル変数も使わずグローバル変数だけ使えば問題なし

81ナイコンさん2018/06/13(水) 02:38:14.82
>>78
ローカル変数を固定番地に配置すれば良い。関数の入り口でそれらをスタックに退避すれば再帰もできるし実行中のオーバーヘッドも小さい。

82ナイコンさん2018/06/13(水) 02:54:52.19
> 如何に8bit CPUが制限だらけかわかる

6809とか知らない人?

83ナイコンさん2018/06/13(水) 04:37:45.80
>>82
6809は出た時期が遅いからな
8086よりも後発で68000と同時期じゃなかったか?

84ナイコンさん2018/06/13(水) 04:42:15.86
8bit

85ナイコンさん2018/06/13(水) 04:45:00.82
8bit CPUはアドレスが16bitだからアドレッシングモードなどを贅沢にすると
当然、複数の16bitの加算、減算回路が必要になり
結局16bitCPUとトランジスタ数が変わらなくなるんじゃないの?
6809はかなりのトランジスタ数なんじゃないかな

86ナイコンさん2018/06/13(水) 05:04:53.80
ちょっと訂正
× 複数の16bitの加算、減算回路が必要になり
○ 複数の16bitの加算、減算が必要になり

遅くてもいいなら演算回路はどうにでもなるからね
6809のようなアドレッシングモードが高機能な場合、
データの演算そのものよりもアドレス計算の方が計算量が多くなってしまう

87ナイコンさん2018/06/13(水) 05:19:40.18
6809はレジスタ数を極小にしたからアドレッシングを強化できたと言える。

88ナイコンさん2018/06/13(水) 05:25:49.48
これは16bit CPUにも言えることで32bitレジスタが使えるような68000のような高機能な16bit CPUは
単純な32bit CPUと大差ないかまたはより多くのトランジスタ数を必要としたりする
32bitのARMのCortex-M3は3万3000ゲート、MIPSのM4Kは3万5000ゲートと言われてる
ワンチップマイコンでも高機能な16bitCPUは淘汰されて32bitに置き換わってる

89ナイコンさん2018/06/13(水) 06:09:53.45
>>85
そこを上手くこなしたのが6502のアドレス演算
Z80がボケーっとリフレッシュアドレス出してるデコード中に下位アドレス読み込んで次の処理を始めているのでムダがない

90ナイコンさん2018/06/13(水) 06:30:34.32
さらに6800や6809がアドレス計算でバスをボケーっと遊ばせている間に上位アドレス読み込んでそのまま試しに使ってみるのでインデクスレジスタの上位バイトも要らなくなって速い安い美味いCPUになっている

91ナイコンさん2018/06/13(水) 06:40:20.26
>>76-77
「逃げたー」の次は「他人様のー」かよ w
他人のコードだろうが具体例には違いないだろ、バカすぎるわ
色々おかしいとしても具体的なコードで反論してきた>>65-67の方が100倍マシだよ

92ナイコンさん2018/06/13(水) 06:54:00.92
>>79
> 8088や8086はスタックアクセスにBPレジスタが用意
> 68000ならlink命令
両方とも最適化が進んで使われなくなったけどねw
>>82も書いてるけどレジスタの問題よりアドレッシングモードの問題の方が大きい

93ナイコンさん2018/06/13(水) 07:20:19.05
>>91
> 色々おかしいとしても

具体的に指摘できないけどケチ付けたいのは解った。

94ナイコンさん2018/06/13(水) 07:36:32.91

95ナイコンさん2018/06/13(水) 11:28:35.03
IX、IY使って一番いいことはIX+dの'd'のところを構造体名で書けること
高速化は動くものができてから好きなだけやればいい
デバッガどころか文字出力もない環境でよくゲームなんか作ったもんだと今更ながら呆れる

96ナイコンさん2018/06/13(水) 12:08:06.34
>>94
「全然違うコード」ってトンチンカンな主張繰り返したいの??

97ナイコンさん2018/06/13(水) 12:22:50.89
>>96
HL使ったコードでどやられてもね
しかもHL壊してるし

98ナイコンさん2018/06/13(水) 18:09:48.24
「これはIX使うのが間違ってんだよなあ」の意味も理解できないし壊したくないレジスタにどうすればいいかもわからん素人さんかよ。
想像を遥かに超えた馬鹿だなw

99ナイコンさん2018/06/13(水) 18:39:17.89
LD D, (IX + A) ができないって話に IX 使うのが間違ってるとか前提変えてどや顔かよ w
しかも命令の代替の話だから D 以外を壊さないのは常識

100ナイコンさん2018/06/13(水) 18:53:31.69
俺は頭悪いしモノを知らないからMレジスタは知ってるがHLレジスタは知らない。

新着レスの表示
レスを投稿する