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

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

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

1 :ナイコンさん:2018/06/07(木) 00:31:12.73 .net
【前スレ】
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 .net
8ビットCPUでC言語? ないないありえないっしょ! 3
http://matsuri.5ch.net/test/read.cgi/i4004/1528299072/

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

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

4 :ナイコンさん:2018/06/07(木) 02:03:07.80 .net
『信長の野望・全国版』...前作『信長の野望』は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 .net
wikipediaは嘘も多いからなんとも言えないけど
88版だと「%s様が病気になりました」なんかの文字列があるね
解析するとメモリの1183h〜あたりがprintfの処理かなぁ
LD HL, n
ADD HL, SP
ってコードが多いのがC言語っぽいけど
IXやIYがあまり使われてなさそうなのがコンパイラっぽく無いとも感じる
引数制限してるかグローバル変数使いまくりなんだろうか

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

33 :ナイコンさん:2018/06/10(日) 13:38:03.38 .net
http://somn9.xyz/4

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

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

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

37 :ナイコンさん:2018/06/11(月) 06:08:10.26 .net
ちなみに下記コードを同じ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 .net
同じく下記コードだと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 .net
LSI C-80は、8080用コンパイラだから、オブジェクトで
IX,IYが使われないのは当たり前。

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

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

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

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

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

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

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

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

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

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

47 :ナイコンさん:2018/06/11(月) 22:52:13.05 .net
>>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 .net
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 .net
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 .net
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 .net
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 .net
IX,IY便利だよ、ポインタ2セット抱えてINC L DEC Lちまちまやるのはただのアホ

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

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

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

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

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

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

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

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

総レス数 1001
258 KB
新着レスの表示

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