C言語なら俺に聞け 161

■ このスレッドは過去ログ倉庫に格納されています
2023/04/21(金) 14:05:20.18ID:rqj2HSDF0
!extend:checked:vvvvv:1000:512
(新スレ立ての際上記コマンドを2行書き込んでください)
C言語の話題のみ取り扱います C++の話題はC++スレへ
質問には最低限の情報(ソース/コンパイラ/OS)を付ける
数行で収まらないソースは以下を適当に使ってURLを晒す
https://paiza.io/
https://ideone.com/
http://codepad.org/

C17
http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2017/n4713.pdf

C11
http://www.open-std.org/jtc1/sc22/WG14/www/docs/n1570.pdf

C23 最新ドラフト
https://www.open-std.org/jtc1/sc22/wg14/www/docs/n3047.pdf

C99
http://www.open-std.org/jtc1/sc22/WG14/www/docs/n1256.pdf
http://kikakurui.com/x3/X3010-2003-01.html

C FAQ 日本語訳
http://www.kouno.jp/home/c_faq/

JPCERT C コーディングスタンダード
https://www.jpcert.or.jp/sc-rules/

※前スレ
C言語なら俺に聞け 160
https://mevius.5ch.net/test/read.cgi/tech/1672191630/
VIPQ2_EXTDAT: checked:vvvvv:1000:512:: EXT was configured
2023/09/28(木) 10:01:07.42ID:9pgsrChg0
MS-DOSのシステムコールって機種によらず共通でしょ
746デフォルトの名無しさん (ワッチョイ 0a1f-oBwi)
垢版 |
2023/09/28(木) 10:02:25.23ID:uRtj8fwF0
TOWNSはTownsOSだろ
747デフォルトの名無しさん (アウアウウー Sacf-j351)
垢版 |
2023/09/28(木) 10:04:03.81ID:7+/lnWbqa
NHKでタマにやってる「我が社の黒歴史」で
FM-TOWNSを取り上げて欲しいな
748デフォルトの名無しさん (ワッチョイ 0a1f-oBwi)
垢版 |
2023/09/28(木) 10:15:55.20ID:uRtj8fwF0
TownsOSはMacOSみたいなGUIを提供してたんだよな
今やWindows到来って時代にだ
2023/09/28(木) 10:16:51.88ID:9pgsrChg0
TownsOSはMS-DOSを拡張したものだし、
チャレンジ精神を評価する事はあっても
黒歴史とするのはあんまりだ
750デフォルトの名無しさん (ワッチョイ 0a1f-oBwi)
垢版 |
2023/09/28(木) 10:20:51.20ID:uRtj8fwF0
>>749
番組見たら考え方変わるよw
2023/09/28(木) 10:24:22.26ID:9pgsrChg0
「我が社の黒歴史」ってやるなら、
是非NHK自身をネタにしてください
ライブドア事件の時、
ニュースに飛びついたNHK社員が
一斉にインサイダー取引で株売買してました
家族にも教えてたそうです
弁護士による内部調査を実施しましたが
社員の多くが調査拒否してましたよ
どんだけ暇なんだろうって思いました
752デフォルトの名無しさん (ワッチョイ 5301-oBwi)
垢版 |
2023/09/28(木) 10:32:23.32ID:Ev8os2Ag0
あの番組は、黒歴史があるから今の発展がある
みたいなノリの番組だから、後がない企業は扱わないよw
2023/09/28(木) 10:41:58.54ID:XO3PoFmz0
TownsOSのこと言うならWin3.1も大して変わらないと思う
どちらもMS-DOSの上で動くGUIシェルの中のひとつ
2023/09/28(木) 10:42:15.16ID:9pgsrChg0
当時のTownsは386採用し、MS-DOSを拡張して32ビットアクセスを実装してました
DOSが64Kの壁を越えられない時代にギガ単位のメモリをリニアに使える環境を実現
これを使ったゲームが人気でしたね
今から見れば当たり前のことで、何それって時代になってしまいましたが
DOS上のゲームでもこの方式を独自に採用したのがありました
DESCENTが有名だったかな

https://ja.wikipedia.org/wiki/DOSエクステンダ
2023/09/28(木) 10:51:11.28ID:6irLEr1Q0
富士通の公式サイトに富士通の歴史の一部として Towns の記述はあるよ。
結果的に廃れたけど黒歴史ということはない。 当時はそれなりにユーザもいた。
756デフォルトの名無しさん (アウアウウー Sacf-j351)
垢版 |
2023/09/28(木) 10:56:41.79ID:7+/lnWbqa
>>751
NHKはまだ産まれ変わってないから「わが社の黒歴史」に出る資格が無い
757デフォルトの名無しさん (ワンミングク MMfa-/HEw)
垢版 |
2023/09/28(木) 10:59:08.38ID:A0Yya1hOM
スレチですね
758デフォルトの名無しさん (アウアウウー Sacf-j351)
垢版 |
2023/09/28(木) 11:02:35.02ID:7+/lnWbqa
>>755
この前はYAMAHAのFM音源が「わが社の黒歴史」に出てたよ
2023/09/28(木) 11:04:12.36ID:9pgsrChg0
16ビットの制約で64キロバイトメモリしか確保できない時代から
一気に4GBメモリがリニアにアクセスできるようになった時は感動しましたよ
64ビットでは、あんまり感動はなかったな、なんでだろう
2023/09/28(木) 12:06:18.28ID:6irLEr1Q0
勉強してなかったからテストの点数が心配だなー チラッ チラッ

みたいな番組なわけだな。
2023/09/28(木) 12:09:23.54ID:MA2VSxCx0
>>759
64KBを超える事より4GBを超えることの方が圧倒的に少ないからだな
2023/09/28(木) 12:44:49.42ID:wMng62Lu0
ちょっと本気でプログラム組みだせばコードサイズ64KBなんてすぐ超える
一方1MBなんて集団でごちゃごちゃやってないかぎり超えない
763デフォルトの名無しさん (ワッチョイ 0a1f-oBwi)
垢版 |
2023/09/28(木) 12:53:02.94ID:uRtj8fwF0
アセンブラで組めばそんな大量のデータサイズにならんよ
2023/09/28(木) 13:56:12.11ID:wMng62Lu0
データじゃなくてコードサイズの話なんだけど
ちょっと凝った仕様を入れようとすると64Kbくらいは簡単に超える
泣く泣く削るか無理して分割ロードにするか
8ビット時代はそんな感じだったな
2023/09/28(木) 14:22:46.10ID:+fR7sAVf0
コード領域の自己書き換えでやりくりやりくり
2023/09/28(木) 14:40:53.17ID:VP1D2tYa0
昔のPRGとかメニュー開くとCDアクセス始めるゲームとかあったなぁ。
メモリー足りず、フィールド、戦闘、メニュー毎にプログラム読み直してるのかと思った。
2023/09/28(木) 15:31:33.20ID:6irLEr1Q0
Turbo C++ の MS-DOS 版にダイナミックロードを補助するライブラリが付いてなかったっけ?
うろおぼえだけど。
768デフォルトの名無しさん (スフッ Sdaa-TrDt)
垢版 |
2023/09/28(木) 18:41:56.40ID:KRBURPw6d
あったよ
うろ覚えだけど
2023/09/28(木) 19:15:05.82ID:0dpaiugf0
>Turbo C++
TurboがC++だった頃なんてあったかな
2023/09/28(木) 19:19:34.33ID:9pgsrChg0
あった
>1990年5月、ボーランドは Turbo C から Turbo C++ へと移行し、アマチュア向け・ローエンド製品を
>Turbo C++、プロ向け・ハイエンド製品を Borland C++ として2系統に展開した。

https://ja.wikipedia.org/wiki/Turbo_C
2023/09/28(木) 20:46:13.07ID:O4GqiEoW0
DOSでも増設メモリに32bitレジスタでアクセス出来たのなら・・・
2023/09/28(木) 22:44:00.88ID:qNYo9AZZ0
それがDOSエクステンダだろ
GO32には世話になった
773デフォルトの名無しさん (ワッチョイ 23ad-2pcI)
垢版 |
2023/10/02(月) 02:12:15.10ID:hWT/DRlk0
X68000 もよろしく
774デフォルトの名無しさん (アウアウウー Sa89-5C2y)
垢版 |
2023/10/05(木) 17:17:30.86ID:WXXGTjkDa
黒歴史度はFM-TOWNSとX68000とどっちがどっち?
2023/10/05(木) 19:38:38.95ID:k4EJU+WL0
何が黒歴史だ
どっちも国産パソコンに革命起こしたんだよ
2023/10/05(木) 19:43:14.40ID:4Dr5MGJz0
TOWNSやX68000の話というのは、
PCやOSの話題にはなってもC言語の話題ではない
2023/10/06(金) 19:26:21.98ID:0FrwfOPH0
>>775
パソコンでありながらゲームしか宣伝してなくて当時発達著しかったゲーム機に負けただけで革命もクソもねえw
2023/10/06(金) 19:35:07.48ID:UFkJ0Gsc0
ゲーム機とPCで切磋琢磨してたんだろ
ゲーム機にだって栄枯盛衰はあぅたよ
そういえばプレステにLinux入れてアプリ作って動かしてた人いたなあ
プレステは高性能すぎて、特定国への輸出が規制を受けてた
2023/10/06(金) 19:43:43.15ID:UFkJ0Gsc0
PlayStation3に採用されたCPUはCell、ソニーとIBM、東芝の共同開発だった。
この辺もWikiを読むと面白い
780デフォルトの名無しさん (ワッチョイ daad-iLfk)
垢版 |
2023/10/07(土) 05:34:11.31ID:mvcCmF0H0
あー。沢山繋げてスパコンみたいな。知らんけど。
2023/10/07(土) 12:37:19.06ID:2aizzJpQ0
>>778
PCがグラフィックボードに力を入れだすのはウィンドウズ普及以降になる
ゲーム機にはニンテンドー64のRDRAMとかセガサターンのシンクロナスDRAMとかアーケードやシリコングラフィックCGマシンから取り入れられた新技術が投入されX68000やタウンズのかなう相手ではなかった
2023/10/07(土) 12:51:58.85ID:TufJ0SRx0
X68やTOWNSはMD/SFCとの争い・・・
・・・PS1 ジャンピングフラッシュの元になったゲームはX68で作られたんだっけ?あとワイヤーフレームのスターウォーズも。
2023/10/07(土) 13:51:13.10ID:c4CFtcBt0
(それって昔のPC板やレトロゲー板の範疇だからそろそろやめてくんないかなここはC言語スレ・・・)
2023/10/07(土) 14:41:36.91ID:/93XcW4W0
年寄りは人の話を聞かないからな
785デフォルトの名無しさん (ワッチョイ daad-iLfk)
垢版 |
2023/10/07(土) 15:09:15.52ID:mvcCmF0H0
68000は素晴らしい。8086のようなセグメントのあるCPUはクソだ。

と当時は思ったものです。
2023/10/07(土) 15:34:43.34ID:BCZCKqNS0
むしろ、そう言う話に持って行きたかった
787デフォルトの名無しさん (ワッチョイ 3ded-Jvcl)
垢版 |
2023/10/07(土) 15:55:47.74ID:9cx0ijSo0
X68000は素でgccが動いてうらやましかった。
一方86はgo32で無理矢理動かしてた。
Cに戻してみた。
2023/10/07(土) 15:58:51.83ID:BCZCKqNS0
レジスター数は羨ましかったな
あんだけあればレジスターだけでプログラム動かせそう、とか
789デフォルトの名無しさん (ワッチョイ daad-iLfk)
垢版 |
2023/10/07(土) 16:46:51.81ID:mvcCmF0H0
アセンブラやるとね、バイトの並びが上位桁が先に来るので人間に分かり易くて良い、みたいな話もあった。
68000 だけじゃなく 6809 とか 6800 とかの 8 bit CPU の頃からいわゆる68系はそうだったな。
Sun の Sparc もそうか。
2023/10/07(土) 16:55:51.01ID:tqmAUUbt0
なんでリトルエンディアンになるの?
791デフォルトの名無しさん (ワッチョイ daad-iLfk)
垢版 |
2023/10/07(土) 17:19:33.66ID:mvcCmF0H0
80系は昔からリトルエンディアンだったな。アドレスの小さい方が桁の小さい方にした方がコンピュータ的には自然だと考えたのかも知れない。
2023/10/07(土) 17:30:29.12ID:2aizzJpQ0
リトルエンディアンは同じアドレスから読み取ると
16ビットデータを8ビットレジスタで読んでもちゃんと下位8ビットが読める
ビッグエンディアンは上位8ビットが読み込まれてしまう
さらに68000は16ビット以上は奇数アドレスから読み込めないという制限があるのでハマることもある
2023/10/07(土) 17:36:03.54ID:qAlp08tM0
リトルエンディアンの場合は、図を描くときに右から左、下から上に番地が増えるようにすると合理的なのよね

ダニーコーエンの、エンディアンの語源になった文書にもそんな図があったと思う。アスキーアートだけど

https://ja.m.wikipedia.org/wiki/ダニー・コーエン_(計算機科学者)
2023/10/07(土) 17:36:48.91ID:OGJgvxVr0
8bitCPUの頃のCPUの加算器は16bit+16bitしかできなかった、32bitの加算は分割してやるしかない
加算を分割してやる時は下の桁からやる
上の桁からやると、下の桁で繰り上がりが発生したら上の桁に戻って繰り上がり処理することになるから
下の桁が前にあるのがリトルエンディアン、こっちの方が自然だと思う
ビッグエンディアンはデータを後ろから前にアクセスしていくことになる、それだけだって言えばそうだけど
2023/10/07(土) 17:43:26.56ID:pov02R//0
キャストしやすさもあるな。
メモリ上にある int 型のデータを char にキャストするみたいなとき
リトルエンディアンなら単にその場所から 1 バイトを読みだせばいいだけだが、
ビッグエンディアンだとアドレスをずらして読みだすか
読みだしてからマスクするかになる。

まあそのへんは効率的に処理できる命令があったりするんだろうけど
そんなこと最初から考えずに済むならそのほうがいい。
796デフォルトの名無しさん (ワッチョイ daad-iLfk)
垢版 |
2023/10/07(土) 18:12:07.87ID:mvcCmF0H0
まあでもネットワークバイトオーダーはビッグエンディアンになっちゃってるんだよね。
これはこれで理由があるのかも知れないが、とにかく80系CPUだとひっくり返さねばならなくなった。
結局C言語だとそういったCPUの違いを吸収するために htonl(), ntohl() のようなマクロまたは関数を使うことになると。
2023/10/07(土) 18:15:49.27ID:BCZCKqNS0
それは、そういう風に決めないと、処理出来ないからだろう
2023/10/07(土) 18:24:53.16ID:pov02R//0
通信系はなぁ……。 結局は通信相手と同じ規約を使うしか仕方がないから
個々のコンピュータ (アーキテクチャ) にとっては不自然になることもある。

モダンなプロトコルはリトルエンディアンを採用している事例もそれなりにあるよ。
2023/10/07(土) 18:45:29.52ID:2aizzJpQ0
そのエンディアン変換が68000は面倒で
例えばZ80なら16ビットを上位バイト下位バイトレジスタ間で3命令で交換できるのに
68000はメモリに16ビット書き込み、8ビットシフト、メモリから8ビット読み出しという手順をしなければならない(確か)
万能のCPUなんてないものだと思ったよ
2023/10/07(土) 19:39:28.37ID:TKUMh5Zod
「インディアン」は何かの差別用語に該当しないのな
戦争に負けるとはこういう事だぞお前ら
2023/10/07(土) 19:41:36.75ID:BCZCKqNS0
由来はガリバー旅行記
2023/10/07(土) 19:50:37.92ID:BCZCKqNS0
アメリカ発見したとき(これも本当はおかしいことなんですが)、
そこがインドだって思いこんた白人がつけた呼び方だから
本当は間違いなんですけどね
そのインディアンと、エンディアンは別の言葉です
2023/10/07(土) 21:15:26.02ID:dXS7C+xF0
算用数字もリトルエンディアンだとよかったなあ
2023/10/07(土) 21:15:43.32ID:dXS7C+xF0
算用数字もリトルエンディアンだとよかったなあ
2023/10/07(土) 22:44:07.58ID:S3fYgflU0
>>799
68000で16bitのd0.wの値をエンディアン変換
ror.w #8,d0

68000で32bitのd0.lの値をエンディアン変換
ror.w #8,d0
swap d0
ror.w #8,d0
806デフォルトの名無しさん (ワッチョイ daad-iLfk)
垢版 |
2023/10/08(日) 00:21:50.43ID:GlkvWXsG0
そういや Oh! X が復刊するんだってよ。(単発で1冊出すだけだとは思うが)。
https://kibidango.com/project/2285/action/17185?ui_source=action&ui_campaign=177822&ui_medium=email

X68000Z 用のソフトを付けるそうだが8800円と妙に高い。完全にマニア向け(というか信者向け)の本だな。
807デフォルトの名無しさん (アウアウウー Sa39-OOOs)
垢版 |
2023/10/08(日) 10:00:50.20ID:CrdCteTPa
SJISがBEじゃないのはなんでだろうね
MSはアホだったのか?
808デフォルトの名無しさん (アウアウウー Sa39-OOOs)
垢版 |
2023/10/08(日) 10:01:26.67ID:CrdCteTPa
間違えた
SJISがLEじゃないのはなんでだろうね
漏れがアホだった
2023/10/08(日) 10:27:48.16ID:yFmeE5YY0
質問の意味が分からなかったんだが
2バイト文字の上位、下位の順番のことかな?
2023/10/08(日) 10:44:57.38ID:Ss9cPRopM
もともと日本メーカー(多分NEC)が策定したような気がする
2023/10/08(日) 11:24:23.52ID:tCGlxsdd0
JIS コードでの概念としては第一バイトが区、第二バイトが点に対応するようには設計されてる。
2バイト整数の上位と下位ではなく「第1バイト(区)」「第2バイト(点)」の組なんだよ。

Shift_JIS はアスキーコードと共存できるように JIS の配置をずらした。 (だから Shift と名前がついてる。)
812デフォルトの名無しさん (ワンミングク MMea-nQTY)
垢版 |
2023/10/08(日) 12:24:35.99ID:hexAHbw2M
分かったから他のスレ行けよ
2023/10/08(日) 13:05:45.22ID:SlOLtELZ0
ここはCを知り尽くした老害の集いとみなせ
常に話題に新鮮さが求められる
流れを変えたくば新鮮なC言語の話を振ればよい
814デフォルトの名無しさん (アウアウウー Sa39-OOOs)
垢版 |
2023/10/08(日) 13:16:39.02ID:CrdCteTPa
wchar_t は何bit?
2023/10/08(日) 14:46:20.48ID:tCGlxsdd0
>>814
処理系定義。
816デフォルトの名無しさん (ワッチョイ daad-iLfk)
垢版 |
2023/10/08(日) 16:18:18.23ID:c7bH/Jal0
>>813
新鮮なCの話なんて、あるのか?w
2023/10/08(日) 16:26:29.67ID:tCGlxsdd0
C23 の話題なら……。
今回の変更は割とデカいし。
2023/10/08(日) 18:52:25.18ID:IT1htqzv0
C11も大して使われてる気がしないところでC23なぁ
2023/10/08(日) 19:56:42.76ID:hVEDEpG10
いつだったかコミケの第何回かの略称と紛らわしかった思い出
2023/10/08(日) 22:56:49.03ID:bFy9tmBW0
SJISにエンディアンの問題なんかねーしw
2023/10/09(月) 00:16:32.12ID:v5yIEMGi0
>>820
まあ強いて言うならSJISはビッグエンディアン固定だよね
2023/10/09(月) 00:31:56.49ID:J9meIr3U0
>>821
エンディアンというのは数値にしか成り立たない概念でしょ
UTF-16はエンディアンの区別があるけど、これは16bitの数値だからあって当然だけど、SJISは単なるバイトストリームでしょ
なのでエンディアンの区別は無いはずだけどね
SJISが16bitの数値として定義されてんなら、何かソースを教えてくれよ
823デフォルトの名無しさん (ワッチョイ 7a11-kEni)
垢版 |
2023/10/09(月) 01:36:54.19ID:Epzok5Ad0
C言語はOSの仕様とセットだから、どのOSのC言語か書かないと意味がない。
2023/10/09(月) 07:56:20.38ID:JBACiIYd0
SJISにしろJISにしろ98/88で使おう(テキストVRAM書き込みや漢字ROMからの読み出し)
とするときはなんかよくわからん変換やらされた思い出・・・。
2023/10/09(月) 18:41:50.35ID:iynFVAFm0
>>817
constexpr、nullptr、auto
C++で便利だったやつが追加されるんだ
2023/10/09(月) 18:42:02.61ID:iynFVAFm0
>>817
constexpr、nullptr、auto
C++で便利だったやつが追加されるんだ
2023/10/09(月) 19:19:32.46ID:v5yIEMGi0
>>822
文字コードは数値だと思ってたけど違うの?
ソースに似てるけどソートは出来るよ
2023/10/09(月) 19:24:49.57ID:v5yIEMGi0
アナル可変長形式は数値じゃあないのか
勉強になったわセンキュー>>882
2023/10/09(月) 19:30:25.37ID:Slr0Hoys0
コーヒーふきそうだった
責任取ってよね
2023/10/09(月) 19:34:22.38ID:Oqw93GGy0
アナル可変長形式ってどんな形式だべ?
太さによって広がりはするけど長さは……
2023/10/09(月) 19:58:17.35ID:U5VU0viZ0
SJISって1stバイトの最上位ビットが立ってるのをもって
後続バイトがペアになるわけだが
ここからエンディアンへの繋がりを見出だせない
2023/10/09(月) 20:01:41.10ID:Slr0Hoys0
>最上位ビットが立ってる

もうちょっと複雑だったと思う
UJISとは違う
2023/10/09(月) 23:50:22.00ID:G12VbuWM0
SJISはコード表見てて文字列を1バイトづつ見て行って
0x81~0x98、0xe0~0xeeが出てきたらSJIS文字だと判断するコード書いてた。
2023/10/09(月) 23:55:28.00ID:G12VbuWM0
あと文字列操作コード書きやすいように1文字2バイトに変換(?)するコードも書いてた。
2023/10/10(火) 00:04:28.27ID:vFMCesii0
>>827
> SJISが16bitの数値として定義されてんなら、
と書いてあるだろ
数値だと思ってたけどとか、読解力が無さすぎて泣けてくる…
JISコードは16bitの数値(2byteコード)としても定義されてるけど、SJISはそれを巧妙にエンコードしたものと言えるだろう
なのでやはりバイトストリームだな
2023/10/10(火) 00:41:46.82ID:WRpVvMtq0
テキストファイルの形式としてSJISはビッグエンディアンでなければならないって程度の認識。
2023/10/10(火) 00:44:51.87ID:WRpVvMtq0
SJISを文字と数値の相対表と見るか、
テキストのファイル形式を含めた規格とみるか。
838デフォルトの名無しさん (ワッチョイ 5a7f-FHep)
垢版 |
2023/10/10(火) 01:54:11.03ID:hSg/mMq/0
いまどきキャラクタセットの操作を自作してしまうのはヤバいプログラマ
2023/10/10(火) 09:46:25.05ID:jpaIozT30
昔書いたunicode対応のソースが最新コンパイラでエラー、ワーニングが山程出てきて心折れるんや・・・。
840デフォルトの名無しさん (ワッチョイ ae8f-HisN)
垢版 |
2023/10/10(火) 10:47:51.74ID:0SFeJAzN0
文字列としてリトルエンデアンだと可変長文字コードが面倒な事になるでしょうに
841デフォルトの名無しさん (アウアウウー Sa39-OOOs)
垢版 |
2023/10/10(火) 10:58:37.96ID:vCJOXgr3a
>>824
漢字ROMとVRAMはエンディアンというより(エンディアン)もあるが
ややこしかったのは右半分と左半分とかな
2023/10/10(火) 11:36:08.74ID:k8E2nUhl0
>>840
"Aア"は0x41 0x83 0x41だけどこれがもし0x41 0x41 0x83だったら、0x41 0x41まで読んだところでこれが"AA"なのかどうかを次のバイトまで読まないと確定出来なくなるわけだよね
2023/10/10(火) 14:45:56.30ID:lY2q8v9P0
>>835
どのあたりが巧妙なのか ついでに解説をお願い思案す
844デフォルトの名無しさん (アウアウウー Sa39-OOOs)
垢版 |
2023/10/10(火) 15:06:58.22ID:vCJOXgr3a
x 巧妙に
o 泥臭く

EUC-JPで良かったんだよ
■ このスレッドは過去ログ倉庫に格納されています
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

ニューススポーツなんでも実況