■ このスレッドは過去ログ倉庫に格納されています
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