[表示 : 全て 最新50 1-99 101- 201- 301- 401- 501- 601- 701- 801- 901- 1001- 2ch.scのread.cgiへ]
Update time : 10/29 23:41 / Filesize : 272 KB / Number-of Response : 1007
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

C言語なら俺に聞け 161



1 名前:デフォルトの名無しさん (ワッチョイ 0f63-sFbk) mailto:sage [2023/04/21(金) 14:05:20.18 ID:rqj2HSDF0.net]
!extend:checked:vvvvv:1000:512
(新スレ立ての際上記コマンドを2行書き込んでください)
C言語の話題のみ取り扱います C++の話題はC++スレへ
質問には最低限の情報(ソース/コンパイラ/OS)を付ける
数行で収まらないソースは以下を適当に使ってURLを晒す
https://paiza.io/
https://ideone.com/
codepad.org/

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

C11
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
www.open-std.org/jtc1/sc22/WG14/www/docs/n1256.pdf
kikakurui.com/x3/X3010-2003-01.html

C FAQ 日本語訳
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

661 名前:デフォルトの名無しさん (ワッチョイ 4fb0-gBtz) [2023/09/22(金) 15:07:59.94 ID:wJrbx3oK0.net]
受ける側が用意しなあかんかぁ

662 名前:デフォルトの名無しさん (ワッチョイ 7fab-fp56) mailto:sage [2023/09/22(金) 15:08:23.02 ID:HzXlnxdE0.net]
>>657 のは、OS側のメモリに対する不正アクセスに引っかかって
エラー発報になるのは少ないんじゃないかな?
(戻りの自動変数のポインタが不正アクセスになる可能性は低い)

構造体の中にさらにポインタをつかってて、ゴミなポインタ値で実体見に行ってやっと上記が発動する

struct foo {
 struct foo* next;
  int body;
};
こんなので ret->next->body; とやったら *ret の内容がゴミ = ret->next も不定な値
ret->next->body でメモリの不正アクセス

663 名前:デフォルトの名無しさん (ワッチョイ 4fb0-gBtz) [2023/09/22(金) 15:09:39.40 ID:wJrbx3oK0.net]
割り込み処理があると簡単に死ぬよ

664 名前:デフォルトの名無しさん (ワッチョイ 7fab-fp56) mailto:sage [2023/09/22(金) 15:10:08.95 ID:HzXlnxdE0.net]
ハイコストなのをわかってて実体をそのまま返すことはあった
複素数を取り扱う Complex 構造体で 式の形式にしたくて ね

665 名前:デフォルトの名無しさん (ワッチョイ 7fab-fp56) mailto:sage [2023/09/22(金) 15:11:28.51 ID:HzXlnxdE0.net]
>>661
割り込み想定するなら呼び出し元で器渡しとけって話にしかならんじゃろ

666 名前:デフォルトの名無しさん (スッップ Sd5f-8KNq) mailto:sage [2023/09/22(金) 15:14:27.76 ID:wMC0ce2ad.net]
>>653
返値用にもスタックが用意されてる
特にサイズが自由に定義できる構造体では戻り値にレジスタは使えんだろう

667 名前:デフォルトの名無しさん (ワッチョイ 7fab-fp56) mailto:sage [2023/09/22(金) 15:27:37.08 ID:HzXlnxdE0.net]
ID:wJrbx3oK0 がどういう環境で愚痴ってるのかはわからんけど
「割り込みハンドラ内でいろいろやるのをCで記述してるんだけど…」とかだったら
極力スタックは少なくしたい って話に行き着くけども

それならなおさら器は呼び出し側で用意すべし になるよなぁ
最悪関数呼び出しのオーバーヘッドも嫌って きもいマクロ関数が並ぶことも

668 名前:はちみつ餃子 ◆8X2XSCHEME (ワッチョイ 4f3e-7CbB) mailto:sage [2023/09/22(金) 15:30:18.99 ID:jd4xXbI20.net]
似たような話題が出たことがあるような気がしたので思い返してみると C++ スレの話だったわ。
コピーの省略 (copy elision) が保証される場合がどう実装されているのかという話題で
オブジェクトを構築すべき場所を呼び出し側が暗黙に渡してるから
最初からそこに構築される (のでコピーする必要がない) というのが一般的な実装で、
たぶん C の構造体受け渡しで実績があったから C++ では言語仕様として取り込めたんだな。

669 名前:デフォルトの名無しさん (アウアウウー Sacf-PB4I) [2023/09/23(土) 10:05:20.89 ID:i9fpyxKga.net]
thisのことですか



670 名前:はちみつ餃子 ◆8X2XSCHEME (ワッチョイ 273e-ClgD) mailto:sage [2023/09/23(土) 10:39:49.55 ID:ALqEUzvh0.net]
>>667
返却値のこと。
コンストラクタの場合は結果的に this でもあるとは言えるけど

671 名前:デフォルトの名無しさん (ワッチョイ 3b93-gtrM) mailto:sage [2023/09/23(土) 18:43:05.31 ID:lGebHJu00.net]
c言語にthisは無い

672 名前:デフォルトの名無しさん (スッップ Sdaa-cHxT) mailto:sage [2023/09/23(土) 19:21:52.16 ID:h4supWEzd.net]
thisはポインタなので実体を返すとか言う話とは関係ない

673 名前:デフォルトの名無しさん (ワッチョイ 8661-gIzx) mailto:sage [2023/09/23(土) 21:37:44.48 ID:wNThSPil0.net]
x86-64のABIでは、16byte未満はレジスタで渡されて、それ以上はメモリコピーが発生する、それだけ

674 名前:デフォルトの名無しさん (ワッチョイ bb48-NSUt) mailto:sage [2023/09/24(日) 01:41:30.54 ID:XDqOvN5B0.net]
PODっていうんだっけ
構造体が値わたしになるやつ
これはC++だったかな?Cはよくわからん

675 名前:デフォルトの名無しさん (アウアウウー Sacf-PB4I) [2023/09/24(日) 09:28:36.38 ID:2YTVyUlCa.net]
レジスタが64bit=8bytes
レジスタが128bit=16bytes
たしかにレジスタで全部返せるな

676 名前:デフォルトの名無しさん (ワッチョイ 1e63-CSnM) mailto:sage [2023/09/24(日) 09:55:18.81 ID:D6DOZoEp0.net]
そのうち無限長レジスタ出てくるだろ

677 名前:デフォルトの名無しさん (ワッチョイ 8a79-aeRl) mailto:sage [2023/09/24(日) 11:19:45.97 ID:Cw9+et/n0.net]
映画化決定 鬼滅の刃 - 無限長レジスタ編

678 名前:はちみつ餃子 ◆8X2XSCHEME (ワッチョイ 273e-ClgD) mailto:sage [2023/09/24(日) 11:48:58.25 ID:wtxuVbIF0.net]
>>672
C++ 的にはクラスが一定の条件を満たすと C の構造体と互換性があるような性質を持つ。
それが POD。
C++ の POD のことも慣例で構造体と呼んでると思うので、
C の構造体 ≒ C++ の POD みたいな感じ。
POD は値渡しがどうこうとは無関係。

679 名前:デフォルトの名無しさん (スッップ Sdaa-cHxT) mailto:sage [2023/09/24(日) 18:47:28.19 ID:zJPvjQK3d.net]
>>674
あえてマジレスすると
RISCはレジスタ減らす傾向があるのでそれはない
近年のCPUはキャッシュがバカでかいのでレジスタを大きくする必要はあんまりない



680 名前:デフォルトの名無しさん (ワッチョイ 0761-+HDL) mailto:sage [2023/09/24(日) 19:03:57.96 ID:SWucSPIu0.net]
Plain Old Data だね。
ちゃんとした英語だと、dの繰り返しを避けて Plain Ol' Data とするらしい

最新のC++はPODっていう呼び名を廃止したんじゃ無かった?

681 名前:はちみつ餃子 ◆8X2XSCHEME (ワッチョイ 273e-ClgD) mailto:sage [2023/09/24(日) 19:10:57.73 ID:wtxuVbIF0.net]
>>678
概念は廃止した (性質をスタンダードレイアウトとトリビアルに分割して説明している) けど std::is_pod がまだ有るので
「POD がなくなった」と言えるかどうかはちょっと微妙なところ。

682 名前:デフォルトの名無しさん (ワッチョイ 3b93-gtrM) mailto:sage [2023/09/24(日) 19:39:45.99 ID:iqjAJ+9f0.net]
>>674
無限では無いけど VLIW って聞いた事無いのかw❤

683 名前:デフォルトの名無しさん (ワッチョイ 1ecf-WMZf) mailto:sage [2023/09/24(日) 19:54:27.01 ID:9leOLZhk0.net]
>>680
レジスタ長を関係あるか?

684 名前:デフォルトの名無しさん (ワッチョイ 0a30-gIzx) mailto:sage [2023/09/24(日) 22:05:30.32 ID:/fHwRuZw0.net]
>>680
Very Long Instruction Word(超長い命令長)で、レジスタ関係無し

685 名前:デフォルトの名無しさん (ワッチョイ 1e63-CSnM) mailto:sage [2023/09/24(日) 22:12:32.99 ID:D6DOZoEp0.net]
レジスターを実メモリーサイズに拡張し、実メモリーを廃止
プログラムはレジスターに

686 名前:直接ロード、
データは必要に応じたサイズを割り当てる
一種のチューリングマシン
[]
[ここ壊れてます]

687 名前:デフォルトの名無しさん (ワッチョイ de6a-6sCR) mailto:sage [2023/09/24(日) 22:31:37.22 ID:fu7DWNWn0.net]
昔、ルネサスH8だったと思うが、関数内で大きなconst配列を定義したところ、RAM不足のビルドエラーに。
constならROM領域に割り付けるんじゃないのと思いルネに聞いたところ「言語仕様上static変数はconstの有無によらずRAMに割り付けることになってる…」とかいう回答。

Cの規格では割付領域まで規定してるのですかね。


void func(void){
static const char LARGE_TABLE[1024]={...};
...
}

688 名前:デフォルトの名無しさん (ワッチョイ 07db-oBwi) [2023/09/25(月) 00:05:56.55 ID:flE1dY0R0.net]
Cコンパイラじゃ無くて、リンカに領域指定するんだけどなぁ

689 名前:はちみつ餃子 ◆8X2XSCHEME (ワッチョイ 273e-MH8p) mailto:sage [2023/09/25(月) 00:12:22.79 ID:ubRrbZbh0.net]
処理系定義も広義には言語仕様と言えなくもないんじゃね。
まあ普通は言わんが……



690 名前:デフォルトの名無しさん (ワッチョイ 07db-oBwi) [2023/09/25(月) 00:13:31.19 ID:flE1dY0R0.net]
section切ってアドレス指定だろ?

691 名前:デフォルトの名無しさん (ワッチョイ 3b93-gtrM) mailto:sage [2023/09/25(月) 00:23:33.45 ID:Sev0Fg0J0.net]
>>684
K&Rは定数文字列書換出来るよ。
組込に向かないって言われた理由や

692 名前:デフォルトの名無しさん (ワッチョイ 3b93-gtrM) mailto:sage [2023/09/25(月) 00:26:21.67 ID:Sev0Fg0J0.net]
>>681
メモリをレジスタとして扱う技術が無いなら、無関係だろうな。

マイコンだけがコンピューターのアーキテクチャじゃ無いからね

693 名前:デフォルトの名無しさん (ワッチョイ 8a79-aeRl) mailto:sage [2023/09/25(月) 00:49:29.60 ID:h8TBNStf0.net]
H8のフラッシュは書き込み回数が少ないからじゃないかな
その代わり数MBのDRAMモジュール繋いで実行できたから当時のマイコンにしては組み込みlinuxが乗ったりして富豪プログラミングができた

694 名前:デフォルトの名無しさん (ワッチョイ dee4-+EvS) mailto:sage [2023/09/25(月) 07:20:40.16 ID:4OYJzvHn0.net]
>>684
そんな規定は無い。実装の都合としてもわざわざRAMに置いてうれしいこともなさそう。

「言語仕様上自動変数はconstの有無によらずRAMに割り付ける」ならありそうな話なので
あなたの記憶違いの可能性のほうが高そう。

695 名前:デフォルトの名無しさん (ラクッペペ MMc6-se1G) mailto:sage [2023/09/25(月) 08:15:02.48 ID:bQMRfZQJM.net]
組込みマイコンでconst変数をROMに割り当てるのはスタートアップルーチンの仕事
main関数呼び出し前に実行する処理なので一旦main関数を呼び出してしまった後はROM領域に変数を割り当てる手段はない

696 名前:684 (ワッチョイ 1a91-6sCR) mailto:sage [2023/09/25(月) 09:01:11.94 ID:8uqw4GxL0.net]
皆さんありがとう。

>>691
当たりでした。よく思い返したらそうでした。

void func(void){
const char LARGE_TABLE[1024]={...};
...
}

最初にこう書いたらRAM領域割付になり、結果staticをつけて対処した、のでありました。

で、>>692 のために自動変数はRAM割付なのですね。

697 名前:デフォルトの名無しさん (ワッチョイ 07db-oBwi) [2023/09/25(月) 09:20:03.53 ID:flE1dY0R0.net]
なんか、トンチンカンな話ばかりで笑えるなぁ
ROMに割り付けるはRAMに割り付けるかは
リンカーにどう指示するかによるだけだろ
起動後にROMからRAMにコピーするか
そのままROMに置いとくかはデータの属性によって
リンカーがグループ化してくれたものを
起動時にスタートアップルーチンが転送するだけ

698 名前:デフォルトの名無しさん (ワッチョイ 07db-oBwi) [2023/09/25(月) 09:24:07.97 ID:flE1dY0R0.net]
基本的に初期値を持つ変数は元の値はROMにあるから
幾らでも呼び出せるが、普通の手段では呼び出せないだけ
強制的にアドレス指定すれば幾らでも呼べる

699 名前:デフォルトの名無しさん (ラクッペペ MMc6-se1G) mailto:sage [2023/09/25(月) 09:25:15.48 ID:oaSGqRXsM.net]
メモリ空間の変数の割り当てはスタートアップルーチンのコーディングで指定する
当然C言語ではなくマイコンメーカー指定の独自言語
大体はただパラメータを設定していくだけだけど



700 名前:デフォルトの名無しさん (ワッチョイ 07db-oBwi) [2023/09/25(月) 09:41:12.99 ID:flE1dY0R0.net]
つか、ROM上に変数なんか置かないから、置くのは定数

701 名前:デフォルトの名無しさん (ワッチョイ 8e86-NsvJ) [2023/09/25(月) 09:58:06.95 ID:jZAmQlvo0.net]
>>674
まあ、プログラムの高速化的には2048bitSIMDか4096bitSIMDレジスタがあると高速化の観点ではかなり都合が良い。AVX2は256bitだから単純計算すると性能が8倍とか16倍とかになるからね。
産業用だとarmのCPUに2048bit長のsimdレジスタがあった気がする。

702 名前:デフォルトの名無しさん (ワッチョイ 0aa1-oBwi) [2023/09/25(月) 10:11:14.07 ID:8PlaAgAt0.net]
値を変更しない変数は〜
https://tool-support.renesas.com/autoupdate/support/onlinehelp/ja-JP/csp/V4.01.00/CS+.chm/Compiler-CCRX.chm/Output/ccrxaac0104y.html
誰が嘘を書いたか

703 名前:デフォルトの名無しさん (ワッチョイ 0aa1-oBwi) [2023/09/25(月) 10:14:30.53 ID:8PlaAgAt0.net]
ああ、staticか…なら仕方ない

704 名前:デフォルトの名無しさん (アウアウウー Sacf-PB4I) mailto:sage [2023/09/25(月) 12:55:53.24 ID:RmxLVxNPa.net]
>>693 が描いたシステムは使いたくないな

705 名前:デフォルトの名無しさん (ワッチョイ dee4-+EvS) mailto:sage [2023/09/25(月) 18:22:37.93 ID:4OYJzvHn0.net]
>>693
自動変数がRAMに割り付けられるのは、再帰のたびに別アドレスとしなければならない規定があるから。
(逆に static なら同一アドレスとしなければならない。)

>692,696 (たぶん同一人物)は ROM/RAM 割り当てがスタートアップルーチンの仕事というが、
仮にそれが正しいとするとスタートアップルーチンはどこからロードするのかという、
おかしな話が出てくるので誤りと考えられる。
実際ルネサスツールでもリンカで指定するものとなっている。
https://www.renesas.com/jp/ja/document/mat/h8s-h8300-series-cc-compiler-package-ver700-users-manual
> 最適化リンケージエディタでは、入力オブジェクトプログラム内の同一セクションを結合し、
> start オプションによって指定されたアドレスに割り付けます。

706 名前:デフォルトの名無しさん (ラクッペペ MMc6-se1G) mailto:sage [2023/09/25(月) 19:02:56.98 ID:ULcnNiWhM.net]
スタートアップルーチンは内蔵フラッシュメモリ(かマスクROM)に記録されておりベクターテーブル(スタートアップの一部)にリセット割込みのエントリーアドレスを格納しておく
マイコンの電源ONでリセット割込みが発生するとスタートアップルーチン先頭からプログラムカウンタに沿って実行されメモリ変数やスタック領域、SFRの初期設定を行い最後にCのメイン関数が呼び出される

707 名前:デフォルトの名無しさん (スッップ Sdaa-cHxT) mailto:sage [2023/09/25(月) 21:31:01.48 ID:SHu1A0tUd.net]
>>697
const って何の略でしょう

708 名前:はちみつ餃子 ◆8X2XSCHEME (ワッチョイ 273e-MH8p) mailto:sage [2023/09/25(月) 22:04:58.79 ID:ubRrbZbh0.net]
>>704
C の変数は const を付けても (C の用語で言うところの) 定数にはならない。
C++ では異なるし、言語仕様の定義でなく単に事前に与える値くらいのニュアンスで定数という用語を使っている解説とかもあって混乱しやすい用語ではある。

709 名前:デフォルトの名無しさん (ワッチョイ 8aad-/va4) [2023/09/26(火) 00:22:01.41 ID:+uZUPLZA0.net]
const の変数は値の変更が不可能なので、それを利用してコンパイラが最適化することも出来るというだけで、必ず最適化しなければならないとかROMに割り付けなければならないみたいな決まりはない筈。



710 名前:デフォルトの名無しさん (ワッチョイ 6b01-PB4I) [2023/09/26(火) 00:49:13.67 ID:h6rxe/Hl0.net]
RAM2KBの環境ではROMに割り付けてもらわないと非常に困る

711 名前:デフォルトの名無しさん (ワッチョイ 07e5-+HDL) mailto:sage [2023/09/26(火) 01:39:36.71 ID:kR568CEo0.net]
>>707
ならそうしなさいよ、リンカスクリプトで
という話では?

712 名前:デフォルトの名無しさん (ラクッペペ MMc6-se1G) mailto:sage [2023/09/26(火) 06:43:01.34 ID:9+lSh1ncM.net]
組込みで定数を扱うならdefine定義でソースに埋め込むのが普通
constはregisterと同じ扱いなので>>706

713 名前:フ言うとおり []
[ここ壊れてます]

714 名前:デフォルトの名無しさん (ワッチョイ 0703-oBwi) [2023/09/26(火) 09:03:17.82 ID:HGB+okJ70.net]
いまどきのROM化環境のC言語にゃsectionで領域グループを指定する命令は無いのけ?

715 名前:デフォルトの名無しさん (ラクッペペ MMc6-se1G) mailto:sage [2023/09/26(火) 10:31:51.31 ID:HDnmN3YRM.net]
>>699のマイコンの場合だと
スタートアップ
https://tool-support.renesas.com/autoupdate/support/onlinehelp/ja-JP/csp/V4.01.00/CS+.chm/Compiler-CCRX.chm/Output/ccrx08c0000y.html

コーディング例
https://tool-support.renesas.com/autoupdate/support/onlinehelp/ja-JP/csp/V4.01.00/CS+.chm/Compiler-CCRX.chm/Output/ccrx08c0400y.html#82903

716 名前:デフォルトの名無しさん (ワッチョイ 1ecf-44ew) mailto:sage [2023/09/27(水) 00:11:11.81 ID:mIITHIHe0.net]
セクションの初期化を割り当てというから混乱するんだろう
割り当てはリンク時にもう全部終わってる

717 名前:デフォルトの名無しさん (ラクッペペ MMc6-se1G) mailto:sage [2023/09/27(水) 01:37:20.19 ID:tguPsVh8M.net]
静的な変数はリンク時はextern宣言で外部定義しておきスタートアップルーチンでセクション割当てすることでメモリ配置を確定させるのが一般的
リンクリストで自動変数以外のすべての使用変数を漏れなく割当てできているか確認する必要がある

718 名前:デフォルトの名無しさん (ワッチョイ 0a1f-oBwi) [2023/09/27(水) 09:48:51.32 ID:I/ozjFX50.net]
人間様はリンカーにセクション配置アドレスを教えるのが仕事だった時代もありました

719 名前:デフォルトの名無しさん (ワッチョイ 1e63-CSnM) mailto:sage [2023/09/27(水) 10:10:54.01 ID:lrg7uRD+0.net]
ハードウェア上のメモリー配置を教えるのは、いまでも人間なんじゃないの?



720 名前:デフォルトの名無しさん (ワッチョイ 0a1f-oBwi) [2023/09/27(水) 10:12:59.72 ID:I/ozjFX50.net]
>>715
ワンチップマイコンなら型番から自動で割り当ててくれるよ
まあ、外付けメモリ分は手動だけどな

721 名前:デフォルトの名無しさん (ラクッペペ MMc6-se1G) mailto:sage [2023/09/27(水) 11:19:15.53 ID:0hujVwVvM.net]
静的変数と自動変数(スタック領域)の容量の割り当ての最終的な決定は人間の仕事
あまり変数に領域を取りすぎるとスタックの分が無くなる

722 名前:デフォルトの名無しさん (ワッチョイ 3b15-cHxT) mailto:sage [2023/09/27(水) 11:22:42.10 ID:rbbJx+dJ0.net]
>>714
組み込みでそんな優雅なこと言ってたらバグも直せん

723 名前:デフォルトの名無しさん (ワッチョイ a310-WMZf) mailto:sage [2023/09/27(水) 11:23:26.71 ID:Rw0J2Yjq0.net]
昔のトラブルの癖で1Mバイト以上の領域、配列が必要ならmallocで確保するようにしてる・・・。

724 名前:デフォルトの名無しさん (ラクッペペ MMc6-7af3) mailto:sage [2023/09/27(水) 11:53:58.81 ID:8vHXVA1WM.net]
mallocは64KBまでだろ……

725 名前:デフォルトの名無しさん (ワッチョイ 6a95-+EvS) [2023/09/27(水) 12:26:49.33 ID:9Ywamwi50.net]
・・・16bit?オフセットアドレス範囲?

726 名前:デフォルトの名無しさん (アウアウウー Sacf-PB4I) [2023/09/27(水) 13:10:05.87 ID:OOPn+kCla.net]
8086の時代だろ
EMSのページング

727 名前:デフォルトの名無しさん (ワッチョイ 1e63-CSnM) mailto:sage [2023/09/27(水) 15:08:08.13 ID:lrg7uRD+0.net]
いやそれ以前のCPUの仕様

728 名前:デフォルトの名無しさん (アウアウウー Sacf-j351) [2023/09/27(水) 16:10:06.49 ID:OOPn+kCla.net]
それ以前だと本体メモリでも64kBフル積んでるの少なくないか

729 名前:デフォルトの名無しさん (ワッチョイ 1e63-CSnM) mailto:sage [2023/09/27(水) 16:12:57.75 ID:lrg7uRD+0.net]
8086積んでた当時のPCは128程度は積んでたと思うが
64でフルになるのはZ80のような8ビットPCでの話



730 名前:デフォルトの名無しさん (アウアウウー Sacf-j351) [2023/09/27(水) 16:25:12.39 ID:OOPn+kCla.net]
それ以前のそれに8086を含んでるなら矛盾はしない

731 名前:デフォルトの名無しさん (ワッチョイ 1e63-CSnM) mailto:sage [2023/09/27(水) 16:26:45.84 ID:lrg7uRD+0.net]
8086でフルに積むメモリの意味が分からん

732 名前:はちみつ餃子 ◆8X2XSCHEME (ワッチョイ 273e-ClgD) mailto:sage [2023/09/27(水) 16:44:44.21 ID:Q9yfznPE0.net]
この場合の「フル」はメモリ空間いっぱいのことなんじゃないの。
バンク切り換えまで含めたらいくらでも拡張の余地はあるけど
malloc でバンクを跨ぐわけにはいかんし。

733 名前:デフォルトの名無しさん (ワッチョイ 1e63-CSnM) mailto:sage [2023/09/27(水) 17:00:48.31 ID:lrg7uRD+0.net]
8086のアドレスバスは20ビットだから、1MB実装できる

734 名前:デフォルトの名無しさん (ワッチョイ 07e5-+HDL) mailto:sage [2023/09/27(水) 18:45:56.76 ID:3YDDpoD+0.net]
勉強になります

735 名前:デフォルトの名無しさん (ワッチョイ 1a94-oRtz) [2023/09/27(水) 19:57:19.01 ID:3fbQ67ov0.net]
勉強と言ってももう40年近く昔の知識だぞ
今どき役に立つことなんかあるか?

736 名前:デフォルトの名無しさん (ワッチョイ 07e5-+HDL) mailto:sage [2023/09/27(水) 21:07:16.75 ID:3YDDpoD+0.net]
>>731
すいません、ないです。ただ知的好奇心が非常に満たされます。

737 名前:はちみつ餃子 ◆8X2XSCHEME (ワッチョイ 273e-MH8p) mailto:sage [2023/09/27(水) 22:18:54.45 ID:Q9yfznPE0.net]
レトロコンピュータの資料は探せばいくらでもあるが
面白いところだけ選んで読むというわけにはいかんからな。
読む前にどれが面白いのか判断できるわけもないし、
相互に関連があるので一部の資料だけ見ても意味がわからん。
話題に関連する形で昔の話が出てくるのは
それなりに興味深いということもあるんだろう。

738 名前:デフォルトの名無しさん (ワッチョイ 0a64-gIzx) mailto:sage [2023/09/27(水) 23:14:28.73 ID:zQBl5fyt0.net]
ITの歴史を知ることは為になる
温故知新

739 名前:デフォルトの名無しさん (ワッチョイ 6a14-xAvD) [2023/09/28(木) 00:01:49.83 ID:bZti02EO0.net]
スレ違いだったら申し訳ない
c言語でコンパイルした実行ファイルってosのAPIを使用してなければ別々のosで動かせますか?
cpuアーキは同じ前提です。



740 名前:デフォルトの名無しさん (ワッチョイ 0716-oBwi) [2023/09/28(木) 00:29:26.06 ID:gnUHVRPF0.net]
>>735
そもそも実行環境自体がos依存だろ

741 名前:デフォルトの名無しさん (アウアウウー Sacf-j351) mailto:sage [2023/09/28(木) 00:42:44.54 ID:wsjwbbNAa.net]
CPU同じならセットアップの問題とIO関係のクリア出来てたらそこそこは動くんじゃないか

742 名前:デフォルトの名無しさん (アウアウウー Sacf-j351) [2023/09/28(木) 00:47:13.64 ID:wsjwbbNAa.net]
割とマジで試したいなら
Bochs とか QEMU とかで
OS 無しで動かしてみたら良い

743 名前:デフォルトの名無しさん (ワッチョイ 1e63-s5vX) mailto:sage [2023/09/28(木) 00:55:43.32 ID:9pgsrChg0.net]
スタートアップ辺りにOS依存が有りそう

744 名前:はちみつ餃子 ◆8X2XSCHEME (ワッチョイ 273e-MH8p) mailto:sage [2023/09/28(木) 01:27:51.60 ID:6irLEr1Q0.net]
>>735
原則としては無理。
実行ファイルをメモリに展開して準備するローダがOSの一部だからOS の上で実行するならOSの機能は呼ばれることになる。
実行ファイルの形式が linuxとかだとelf が標準だけどwindowsではpeで、全く互換性はない。

ただ、複数のOSで動く実行ファイルを作るトリックは存在する。
https://justine.lol/cosmopolitan/index.html

745 名前:デフォルトの名無しさん (アウアウウー Sacf-j351) mailto:sage [2023/09/28(木) 06:25:35.94 ID:wsjwbbNAa.net]
>>735
大前提が違ってたな
コンパイルしただけでは実行ファイルは造られない
リンカとローダーを通して初めて実行可能なファイルになる

746 名前:デフォルトの名無しさん (ワッチョイ 07e5-+HDL) mailto:sage [2023/09/28(木) 07:43:47.93 ID:7Zdppbze0.net]
>>735
質問者さんは下記の概要を知ると、参考になるかもです

「組み込み開発でベンダーロックを避けるためにマルチハードにしたい開発チームが、対象ハードごとのgccをビルドして用意する手順」

ややこしいし大変なので、ザッとで十分です

参考までに私が買った本(全部読んだとは言ってない)
「LINUX組み込みシステム」
クレイグ・ホーラボウ
ピアソンエデュケーション

747 名前:デフォルトの名無しさん (ワッチョイ a310-WMZf) mailto:sage [2023/09/28(木) 08:41:31.76 ID:VP1D2tYa0.net]
PC-98用のDOSアプリをTOWNSやAT互換機のDOSで動かしてはいたなぁ。
BIOSコールや各ハード特有機能を使わないアプリに限定されるけど。

748 名前:デフォルトの名無しさん (ワッチョイ 3b15-cHxT) mailto:sage [2023/09/28(木) 09:51:32.79 ID:wMng62Lu0.net]
>>743
OSが同じなら動くのが当然
MS-DOSがアレだから普通は動かないけどw

749 名前:デフォルトの名無しさん (ワッチョイ 1e63-CSnM) mailto:sage [2023/09/28(木) 10:01:07.42 ID:9pgsrChg0.net]
MS-DOSのシステムコールって機種によらず共通でしょ



750 名前:デフォルトの名無しさん (ワッチョイ 0a1f-oBwi) [2023/09/28(木) 10:02:25.23 ID:uRtj8fwF0.net]
TOWNSはTownsOSだろ

751 名前:デフォルトの名無しさん (アウアウウー Sacf-j351) [2023/09/28(木) 10:04:03.81 ID:7+/lnWbqa.net]
NHKでタマにやってる「我が社の黒歴史」で
FM-TOWNSを取り上げて欲しいな

752 名前:デフォルトの名無しさん (ワッチョイ 0a1f-oBwi) [2023/09/28(木) 10:15:55.20 ID:uRtj8fwF0.net]
TownsOSはMacOSみたいなGUIを提供してたんだよな
今やWindows到来って時代にだ

753 名前:デフォルトの名無しさん (ワッチョイ 1e63-CSnM) mailto:sage [2023/09/28(木) 10:16:51.88 ID:9pgsrChg0.net]
TownsOSはMS-DOSを拡張したものだし、
チャレンジ精神を評価する事はあっても
黒歴史とするのはあんまりだ

754 名前:デフォルトの名無しさん (ワッチョイ 0a1f-oBwi) [2023/09/28(木) 10:20:51.20 ID:uRtj8fwF0.net]
>>749
番組見たら考え方変わるよw

755 名前:デフォルトの名無しさん (ワッチョイ 1e63-CSnM) mailto:sage [2023/09/28(木) 10:24:22.26 ID:9pgsrChg0.net]
「我が社の黒歴史」ってやるなら、
是非NHK自身をネタにしてください
ライブドア事件の時、
ニュースに飛びついたNHK社員が
一斉にインサイダー取引で株売買してました
家族にも教えてたそうです
弁護士による内部調査を実施しましたが
社員の多くが調査拒否してましたよ
どんだけ暇なんだろうって思いました

756 名前:デフォルトの名無しさん (ワッチョイ 5301-oBwi) [2023/09/28(木) 10:32:23.32 ID:Ev8os2Ag0.net]
あの番組は、黒歴史があるから今の発展がある
みたいなノリの番組だから、後がない企業は扱わないよw

757 名前:デフォルトの名無しさん (ワッチョイ 7f8e-se1G) mailto:sage [2023/09/28(木) 10:41:58.54 ID:XO3PoFmz0.net]
TownsOSのこと言うならWin3.1も大して変わらないと思う
どちらもMS-DOSの上で動くGUIシェルの中のひとつ

758 名前:デフォルトの名無しさん (ワッチョイ 1e63-CSnM) mailto:sage [2023/09/28(木) 10:42:15.16 ID:9pgsrChg0.net]
当時のTownsは386採用し、MS-DOSを拡張して32ビットアクセスを実装してました
DOSが64Kの壁を越えられない時代にギガ単位のメモリをリニアに使える環境を実現
これを使ったゲームが人気でしたね
今から見れば当たり前のことで、何それって時代になってしまいましたが
DOS上のゲームでもこの方式を独自に採用したのがありました
DESCENTが有名だったかな

https://ja.wikipedia.org/wiki/DOSエクステンダ

759 名前:はちみつ餃子 ◆8X2XSCHEME (ワッチョイ 273e-ClgD) mailto:sage [2023/09/28(木) 10:51:11.28 ID:6irLEr1Q0.net]
富士通の公式サイトに富士通の歴史の一部として Towns の記述はあるよ。
結果的に廃れたけど黒歴史ということはない。 当時はそれなりにユーザもいた。



760 名前:デフォルトの名無しさん (アウアウウー Sacf-j351) [2023/09/28(木) 10:56:41.79 ID:7+/lnWbqa.net]
>>751
NHKはまだ産まれ変わってないから「わが社の黒歴史」に出る資格が無い

761 名前:デフォルトの名無しさん (ワンミングク MMfa-/HEw) [2023/09/28(木) 10:59:08.38 ID:A0Yya1hOM.net]
スレチですね






[ 続きを読む ] / [ 携帯版 ]

前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧]( ´∀`)<272KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef