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

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

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

1 :ナイコンさん (ワッチョイ df99-dE/J):2020/07/02(木) 00:02:41 ID:++jZerDK0.net

【前スレ】
8ビットCPUでC言語? ないないありえないっしょ!

Part.4 https://matsuri.5ch.net/test/read.cgi/i4004/1528299072/
Part.3 http://matsuri.5ch.net/test/read.cgi/i4004/1528299072/
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===|┘  
           〈__〈 〈__〈 〈__〈 VIPQ2_EXTDAT: checked:vvvvv:1000:512:: EXT was configured

2 :ナイコンさん :2020/07/02(木) 18:23:42.39 ID:My0y/6Z50.net
#include <stdio.h>

3 :ナイコンさん :2020/07/02(木) 19:46:41.43 ID:3atGjx/Z0.net
パラメータが6個の関数使う奴は無能

4 :ナイコンさん :2020/07/02(木) 20:30:23.05 ID:bFIF3izo0.net
必死で考えて出してきた例がグラフィックライブラリw

5 :ナイコンさん :2020/07/02(木) 22:31:37.91 ID:YEVK+ffud.net
スタック引き払って帰るときの投げやりで贅沢な
c1 c1 c1 c1 c1 c9
が好きだな

6 :ナイコンさん :2020/07/02(木) 22:32:50.78 ID:JpFKYx/Ya.net
ゲームでもC言語使われてんだし、ありえないは嘘だったで終わりだ。

7 :ナイコンさん :2020/07/02(木) 23:58:42.17 ID:nIh+x81b0.net
C++で書かれたライブラリ出されてもな

8 :ナイコンさん (ワッチョイ 8fcb-tzFc):2020/07/03(金) 00:44:41 ID:fMZXE5UE0.net
ファミコンソフトの開発も
C言語が使われていたりしたのかもしかして

9 :ナイコンさん (ワッチョイ 0b0d-mYnu):2020/07/03(金) 01:12:38 ID:7J5xweEd0.net
コンパイラも普通にいくつも販売されてたしなあ

10 :ナイコンさん (ワッチョイ 2743-Smji):2020/07/03(金) 04:24:42 ID:/lQD1tfv0.net
「BDS Cの使い方」の序章の目的と制限のところにこんな風に書かれてるぞ

> 残念ながら、C言語の構造は、PDP-11のハードウェアに特質に適応するようになっており、
>8080のハードウェアの特質に対して適応しないPDP-11にとって自然な操作
>(自動記憶割付を処理するとき、大変重要なインデックス付きや、非間接的アドレス指定のような)
>は、8080においてはむしろ非能率的な命令コードへと展開されることになる。
>このためBDS Cは、8080システムプログラミング言語としてPDP-11のUNIX Cのように
>急速に一般化することはないだろうと思われるが、
>有能なマイクロプロセッサが、現存する8bitマシンと置き換わり、
>アプリケーション志向のアセンブリー言語プログラミングやヒストリ・ブックを放棄するに値する
>有能なCコンパイラが出現することは確実である。
>本書は、そのときのためのウォーミングアップと考えてもらいたい。
> かいつまんで言えば、アセンブリー言語のプログラミングと比較したときに
>BDS Cの大きな矛盾は、開発環境の機構と理解を重視したため、
>空間的かつ時間的な実行時のオブジェクトコードの能率の低下を招いてしまったことである。
>しかし、ほとんどすべての教育上の、
>また、ほとんどのシステムのプログラミング・アプリケーションにとって、
>犠牲は益よりも少ないと思う。

つまり、8086や68000のような有能なマイクロプロセッサが、
現存する8bitマシンと置き換わり
アプリケーション志向のアセンブリー言語プログラミングや
ヒストリ・ブックを放棄するに値する
有能なCコンパイラが出現することは確実である。
本書は、そのときのためのウォーミングアップと考えてもらいたい。

と書いてあるように読める
つまり、8bitパソコン+BDS Cは来る日のためのウォーミングアップ用だということ

11 :ナイコンさん (ワッチョイ 2743-Smji):2020/07/03(金) 04:27:39 ID:/lQD1tfv0.net
>>3
ローカル変数6個でも効率悪かっただろ
staticにすればいいというやついたがそれじゃあ、無駄にメモリ食うだろう

12 :ナイコンさん :2020/07/03(金) 09:21:18.04 ID:c+CHEozX0.net
>>11
グローバル変数にすればいいだろ

13 :ナイコンさん :2020/07/03(金) 10:37:45.07 ID:ipQch8RE0.net
BASICの呪いでgotoとグローバル変数は目の敵にされるからな

14 :ナイコンさん :2020/07/03(金) 10:57:41.07 ID:NSrqA+0Tp.net
8ビットでも6809のようにインデックス2本、ユーザー用スタックポインタもあるようなものだと、かなりCに向いてるよ。

15 :ナイコンさん :2020/07/03(金) 11:53:17.40 ID:ahHDk4jhM.net
インデックスレジスタの数もあるけどアドレッシングモードが充実してるのがでかい
ローカル変数へのアクセスはスタックポインタだけでできるし、ポインタなら間接アドレッシングが使えたりする

16 :ナイコンさん (ワッチョイ 0ace-VQSO):2020/07/03(金) 13:39:56 ID:ipQch8RE0.net
Z80ではインデックスレジスタ使うと笑われる

17 :ナイコンさん (ワッチョイ 73ea-VQSO):2020/07/03(金) 13:55:20 ID:Oaj4NUWr0.net
ちまちまHLやDEをINCDECしてデータ配置を何度もやり直す方がバカっぽいけど
なぜか絶対の自信を持ってバカにされたな
大して変わらんのに

18 :ナイコンさん :2020/07/03(金) 14:57:10.58 ID:Sdfpn3NZp.net
SR以前の88ゲームとかでクロック計算しながらループ展開したりして見辛くなるの承知で作るような場合はともかく、それ以外は特に意識せずインデックスレジスタを使うべき。

19 :ナイコンさん :2020/07/03(金) 16:55:57.63 ID:Oaj4NUWr0.net
インデクスレジスタ2本は絶対に譲れない条件
ゲームボーイのCPUが8080改にしたのは大きな失敗
シャープの口車の乗ったバカはいったい何を考えていたのか

20 :ナイコンさん :2020/07/03(金) 19:34:18.29 ID:fMZXE5UE0.net
そういやゲームボーイってZ80系だったよな
なんでファミコンと共通の6502にしなかったんだっけな

21 :ナイコンさん :2020/07/03(金) 20:24:32.28 ID:yHXT79IJ0.net
>>10
それは、8bitにフルCとしてインプリメントできなかった故だな。

やっぱ、8bitパソコン+(タイニー言語にとどまる)BDS Cじゃ、
フルセットCが作られるまでのウォーミングアップ用だろうな。

でも、それですら「犠牲は益よりも少ないと思う」と言ってるだろ。

22 :ナイコンさん :2020/07/03(金) 20:28:01.09 ID:yHXT79IJ0.net
>>11
ん?
staticにしてコードが単純になれば、それでコード用のメモリが
減るから元は取れるな。

23 :ナイコンさん (ワッチョイ 8a16-21HI):2020/07/03(金) 21:02:04 ID:UEboYUqr0.net
>>20
CPUの値段とか入手性とかプログラマーが慣れてるとか開発環境がそれなりにまともだったとか
理由は色々あるわな

24 :ナイコンさん :2020/07/03(金) 23:43:22.60 ID:/lQD1tfv0.net
>>22
そもそも8080でC言語使うのって本当に意味あるの?
C言語はコンパクトで速い実行コードを吐き出すから流行ったわけだが
8080ではコンパクトでもないし速くもないよね?
BASICコンパイラでも使った方が速そう

25 :ナイコンさん :2020/07/03(金) 23:50:40.26 ID:yHXT79IJ0.net
>>24
「BASICコンパイラでも使った方が速そう」って根拠は?
そう言うからには、もちろんBASICコンパイラの出すコードを
いろいろ解析して言ってるんだろうね?

だいたい、キミの言ってることは8bit機用のPASCALにも
そのまま当てはまるけど、8bit用のPASCALでもゲームや
商業プログラムは作成されていないとでも主張するのかい?

26 :ナイコンさん :2020/07/03(金) 23:58:39.58 ID:jh7fleMj0.net
行番号付きのBASICによる開発に比べりゃいろいろ配慮しないといけないかもしれないにしろCの開発は極楽ですがな

27 :ナイコンさん :2020/07/04(土) 00:08:55.11 ID:8jwYai040.net
フルセットのCコンパイラが無いと開発できね〜とか、脳無しだな。サブセットのコンパイラでも高級アセンブラとして使えば十分役に立った。機種依存部分をライブラリ化してしまえば、ソースコードの共通化で工数が減らせる。
そういう使い方、今のヒトには理解できないのか。

28 :ナイコンさん :2020/07/04(土) 00:24:35.67 ID:XXf8SG/A0.net
コンパイラごとに制限が違うのに移植性なんてあるわけがない

29 :ナイコンさん :2020/07/04(土) 00:31:14.34 ID:XXf8SG/A0.net
で、信長の野望以外に当時C言語で8bitパソコン向けに開発されたソフトあるのか?

30 :Artane. :2020/07/04(土) 03:50:11.92 ID:V2Gb5yRD0.net
>>24
アセンブラだとバグ出しやすいし開発効率悪くなるので。
昔だと、コンパイラに吐かせたアセンブラコードをそのままアセンブラに入れるのではなく(それだと速度もコードサイズも厳しいので)、手動で手を加えたりしてましたが、
最近は(今でも8080とZ80と6502それぞれの系譜は需要があるっぽくて、独自にコンパイラ作ったりllvmのフレームワークで作ったりしてる人がいる)コンパイラ側でかなり最適化してしまうようですね。

31 :ナイコンさん :2020/07/04(土) 04:49:13.87 ID:2RgPh9wM0.net
ゲームボーイのCPUはLD HL,SP+d8 とADD SP,d8 がZ80にないCが少し速くなる命令らしい
なくても困らんなぁ

32 :ナイコンさん :2020/07/04(土) 12:18:49.46 ID:2RgPh9wM0.net
アセンブラの分岐は飛び先のラベル名を付けるのが面倒
ちょい先やちょい前くらい$+dと書くより記号で済ませたい

33 :悩めるCプログラマー (ワッチョイ 6b16-ERT+):2020/07/04(土) 21:08:19 ID:NRf2QKBs0.net
>>32
マクロアセンブラとかご存じないでしょうか?
M80とかHITECH-Cのアセンブラとか、便利なラベル機能があるんですが・・・

Cコンパイラの出来とか以前にそもそも8080(Z80も?)というプロセッサが
ポインタ相対でのローカル領域を効率よくアクセスできる仕組みでない
ということが原因のようです。こればかりはほかのいかなるコンパイラ
を使っても同様なのでどうしようもないですね。
いくらか書き込まれているようにホントに重要なところは
アセンブラで書いて工夫するということ以外にないでしょう。

34 :ナイコンさん (ササクッテロラ Sp23-h0J+):2020/07/04(土) 21:23:58 ID:7aD9MH+4p.net
信長より後かと思うがレリクス

35 :ナイコンさん (ワッチョイ 0aed-rs14):2020/07/04(土) 22:17:24 ID:QkZ1os+v0.net
ありえないという表現がわからない
PICやAtmelといった組み込み系の8bitは普通にCで開発するしZ80にしても最近はsdccとかでてるわけで
セルフでの開発は大変だったと思うけど実際の開発事例はある

36 :ナイコンさん :2020/07/04(土) 22:53:16.61 ID:HXQbXtKCM.net
もうその話はだいぶ前に終わっとる

37 :ナイコンさん :2020/07/04(土) 22:59:31.82 ID:KYhOlQnH0.net
>>35
そういった話でとっくに論破されてるのに、ほとぼりが冷めたころに
また同じ内容で蒸し返してるんだよね。
このスレでたった一人で頑張ってるありえない主義者のヒトは。

38 :ナイコンさん :2020/07/04(土) 23:17:27.02 ID:KfojXnmc0.net
今時のワンチップマイコンは8bitでもメモリ容量がMSXより多かったりするし
開発するコンパイラは64bitの環境だし実機で動かす必要ないし
条件全然違うよな

39 :ナイコンさん :2020/07/04(土) 23:19:04.17 ID:4ECLwFip0.net
>>35
PICなんて、Z-80と比較にならんほどCプログラムを
動かす上での制限がキツいのにな。
メモリは少ないわ、スタックは8段しか無いわとか。
それでも当たり前にCで開発してるという実情を知らんのだよ。

40 :ナイコンさん :2020/07/04(土) 23:20:13.90 ID:4ECLwFip0.net
>>38
知らんのだから黙ってろ。

41 :ナイコンさん :2020/07/05(日) 04:55:57.41 ID:Md68gnci0.net
>>38
RAMは少ないがROMに相当するフラッシュは多いね
だからArduinoなんて8bitなのにオブジェクト指向のC++が使える
C++を使ってるおかげで文字列の扱いが楽で
尚且つ他人が作ったライブラリを簡単に使える

42 :ナイコンさん (ワッチョイ 2743-Smji):2020/07/05(日) 05:04:04 ID:Md68gnci0.net
Arduino UnoとかはFlash32KBでRAMが2KBしかないが
これは入門機ですぐにメモリ不足に陥る
するとArduino Mega 2560に移行するわけだが
これはRAMが8KBで少ないが8bitなのにROMに相当するFlashが256KBもある

43 :ナイコンさん :2020/07/05(日) 05:46:01.30 ID:Md68gnci0.net
>>39
たった数百円の8bitマイコンでそんなたいしたことやらないからだろ
C言語だってPICやAVRなら無料で扱える
8bitパソコンはそれこそ総額で20万円くらいしてたからな
そりゃパソコンユーザは骨の髄までしゃぶりつくすわ
投資した金額が違う
それでC言語やるとなればプラス4万円から10万円くらいかかる
しかもサブセット
フルセットだったLSI-C80は当時13万円
結局8bitでC言語ってPICやAVR使ってるやつだってことだ

44 :ナイコンさん :2020/07/05(日) 05:55:36.33 ID:Md68gnci0.net
当時は8bitパソコンでC言語をやるには多額の投資が必要だった
それこそ8bitパソコン本体にC言語につぎ込んだ金を合わせれば16bitパソコンが買える位にな
8bitパソコンに多額の投資をしてサブセットのC言語をやるくらいなら
16bitパソコンを買って付属のBASICやった方が速かったというのが実情

総レス数 303
86 KB
新着レスの表示

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