C++相談室 part152
■ このスレッドは過去ログ倉庫に格納されています
1デフォルトの名無しさん
2020/07/12(日) 13:42:20.13ID:TX1mpKr6674デフォルトの名無しさん
2020/09/25(金) 17:22:59.82ID:3+LaQyVV EEPROM知らねえらしいな
マジ頭の更新止まってやんのw
マジ頭の更新止まってやんのw
675デフォルトの名無しさん
2020/09/25(金) 17:33:26.68ID:cdg8K9Zm676デフォルトの名無しさん
2020/09/25(金) 17:36:29.46ID:3+LaQyVV >>675
自動変数かどうかわからんものへのアクセスをSP相対にできるのかって話だよ
重箱の隅ではないごく一般的なケースだぞ
ここC++スレだぜ? this->すげー多用するんだが
UV-EPROMのまま更新が止まった頭じゃ思い至らんかったか
自動変数かどうかわからんものへのアクセスをSP相対にできるのかって話だよ
重箱の隅ではないごく一般的なケースだぞ
ここC++スレだぜ? this->すげー多用するんだが
UV-EPROMのまま更新が止まった頭じゃ思い至らんかったか
677デフォルトの名無しさん
2020/09/25(金) 17:48:59.95ID:cdg8K9Zm >>676
> 自動変数かどうかわからんものへのアクセスをSP相対にできるのかって話だよ
だから自動変数へのポインタを求めるのは呼び出し側でSP相対で計算してるだろ
呼ばれた側は単なるアドレスになってるから関係ない
C/C++の基礎だぞ、まじでわかってないのか?
EP-ROMとか言う前にちょっとは考えろよw
> 自動変数かどうかわからんものへのアクセスをSP相対にできるのかって話だよ
だから自動変数へのポインタを求めるのは呼び出し側でSP相対で計算してるだろ
呼ばれた側は単なるアドレスになってるから関係ない
C/C++の基礎だぞ、まじでわかってないのか?
EP-ROMとか言う前にちょっとは考えろよw
678デフォルトの名無しさん
2020/09/25(金) 18:47:54.21ID:ZULCp3JG679デフォルトの名無しさん
2020/09/25(金) 18:52:40.54ID:3+LaQyVV680デフォルトの名無しさん
2020/09/25(金) 18:53:47.19ID:cdg8K9Zm681デフォルトの名無しさん
2020/09/25(金) 18:56:12.18ID:3+LaQyVV682デフォルトの名無しさん
2020/09/25(金) 19:13:00.04ID:cdg8K9Zm >>681
> this->がどう翻訳されているのか覗いてみたことがないから
C++はスタティックとかヒープとかにインスタンス置けるから一概には言えんけど自動変数としてインスタンスを生成したらthisポインタはSP相対になるだろ
ならない例があるとでも言うのか?
> おまえマジC++でROM焼きしてねえだろ
まあC++のROM焼は確かにあまりないな
ROM焼きするのは8bitはほぼアセンブラだし、16bitでもC言語だったし
ただC言語でもスタック上に生成した構造体へのポインタはC++のthisポインタと同じだしな
アセンブルリスト見たらすぐわかる話
> this->がどう翻訳されているのか覗いてみたことがないから
C++はスタティックとかヒープとかにインスタンス置けるから一概には言えんけど自動変数としてインスタンスを生成したらthisポインタはSP相対になるだろ
ならない例があるとでも言うのか?
> おまえマジC++でROM焼きしてねえだろ
まあC++のROM焼は確かにあまりないな
ROM焼きするのは8bitはほぼアセンブラだし、16bitでもC言語だったし
ただC言語でもスタック上に生成した構造体へのポインタはC++のthisポインタと同じだしな
アセンブルリスト見たらすぐわかる話
683デフォルトの名無しさん
2020/09/25(金) 19:15:18.02ID:ZULCp3JG684デフォルトの名無しさん
2020/09/25(金) 19:54:32.95ID:xGsH9qpm 俺も含めてオッサンしかいないスレw
オッサン同士仲良くしようぜ。
オッサン同士仲良くしようぜ。
685デフォルトの名無しさん
2020/09/25(金) 20:41:49.58ID:3+LaQyVV686デフォルトの名無しさん
2020/09/25(金) 20:53:09.26ID:uaSa3tOr スタックに必要なサイズを求めるのはとても面倒だった。
だから、予め決まった領域を割り当てるのは不可能に近かったので、
データ領域とは逆さまに、データ領域が最後まで使わない部分をスタック
領域とし、暴走しない限りはスタックが足りていると判断する(笑)と言う
当時としては合理的な方法が採用された。
この方式だと、スタックサイズが見積もれなくても、問題が無い。
本等はスタックが足りているかどうかは、暴走したかどうかではなく、
機械語モニタなどで、スタック付近をダンプしてみて、00h以外の値が
ある部分がスタックが使用されている領域とみなすことが出来た。
だから、予め決まった領域を割り当てるのは不可能に近かったので、
データ領域とは逆さまに、データ領域が最後まで使わない部分をスタック
領域とし、暴走しない限りはスタックが足りていると判断する(笑)と言う
当時としては合理的な方法が採用された。
この方式だと、スタックサイズが見積もれなくても、問題が無い。
本等はスタックが足りているかどうかは、暴走したかどうかではなく、
機械語モニタなどで、スタック付近をダンプしてみて、00h以外の値が
ある部分がスタックが使用されている領域とみなすことが出来た。
687デフォルトの名無しさん
2020/09/25(金) 20:55:19.51ID:mkPsEV2L 体はオッサン、心は子供
688デフォルトの名無しさん
2020/09/25(金) 20:57:43.58ID:uaSa3tOr >>682
もちろん、その関数の中ではsp相対になる。
しかし、C言語では、ローカル変数のアドレスを他の関数に渡す。
一方、グローバル変数のアドレスも同じ方式で他の関数に渡す。
で、どちらからきたアドレス化を区別する方法が基本的には無い。
区別するためには、far pointer といって、普通のアドレス以外にセグメントアドレス
を合わせた長いポインタを渡す必要があった。
しかし、それは何かと効率が悪かった。
そこで、Windowsは32BIT化したときに、far pointerを使わずに済ますため、
(大体で言えば)セグメントを全て共通のベースアドレスとサイズを持つようにし、
「Full Flat」方式を採用した。
これで、ポインタ渡したり記録したりするための領域が短くて済み、
効率が上がった。
もちろん、その関数の中ではsp相対になる。
しかし、C言語では、ローカル変数のアドレスを他の関数に渡す。
一方、グローバル変数のアドレスも同じ方式で他の関数に渡す。
で、どちらからきたアドレス化を区別する方法が基本的には無い。
区別するためには、far pointer といって、普通のアドレス以外にセグメントアドレス
を合わせた長いポインタを渡す必要があった。
しかし、それは何かと効率が悪かった。
そこで、Windowsは32BIT化したときに、far pointerを使わずに済ますため、
(大体で言えば)セグメントを全て共通のベースアドレスとサイズを持つようにし、
「Full Flat」方式を採用した。
これで、ポインタ渡したり記録したりするための領域が短くて済み、
効率が上がった。
689デフォルトの名無しさん
2020/09/25(金) 20:58:24.32ID:cdg8K9Zm690デフォルトの名無しさん
2020/09/25(金) 21:01:47.89ID:3+LaQyVV >>688
sp 相対アドレッシングって 6809 以外にはなにがあるのですか?
sp 相対アドレッシングって 6809 以外にはなにがあるのですか?
692デフォルトの名無しさん
2020/09/25(金) 21:21:28.43ID:uaSa3tOr693デフォルトの名無しさん
2020/09/25(金) 21:43:27.60ID:cdg8K9Zm694デフォルトの名無しさん
2020/09/25(金) 21:49:46.68ID:+l2B7ows けんかをやめて 二人をとめて私のために 争わないで もうこれ以上
695デフォルトの名無しさん
2020/09/25(金) 22:03:03.73ID:5mEzuFCz >>694
お前がスタックポインタか
お前がスタックポインタか
696デフォルトの名無しさん
2020/09/25(金) 22:07:42.71ID:OvccyAEi 排他制御の話じゃないかな
697デフォルトの名無しさん
2020/09/25(金) 22:11:37.83ID:GDRWkdI/ >>695
俺がスタックポインタだ
俺がスタックポインタだ
698デフォルトの名無しさん
2020/09/25(金) 22:17:10.28ID:iQJ3d1Xe thisの話は何をモメてるかよくわからないが、単順にブート時のSP初期化値の変更で
後ろのスタックをアクセスするコードを修正する必要があるかないかという話。
彼はSP相対(←この表現がおかしい?)だから変更する必要がないと言ってる。
まぁ、基本手はにはそうだが、処理系によってはバンク切り替えでスタックエリアが裏に回る可能性も否定できない。
そして今時のカーネル開発のようにコンテキスト保持のために同期てんこ盛りになるわけだ。
後ろのスタックをアクセスするコードを修正する必要があるかないかという話。
彼はSP相対(←この表現がおかしい?)だから変更する必要がないと言ってる。
まぁ、基本手はにはそうだが、処理系によってはバンク切り替えでスタックエリアが裏に回る可能性も否定できない。
そして今時のカーネル開発のようにコンテキスト保持のために同期てんこ盛りになるわけだ。
699デフォルトの名無しさん
2020/09/25(金) 22:22:47.78ID:cdg8K9Zm >>691
6800とかでもTSX命令でSPをインデックスレジスタにコピーして相対アクセスできる
8080ならSPHLでSPをHLレジスタにコピーできる、オフセットの処理は自前でやるしかないけど
まあ6809や8086に比べたらかなり効率悪いコードになるけどね
6800とかでもTSX命令でSPをインデックスレジスタにコピーして相対アクセスできる
8080ならSPHLでSPをHLレジスタにコピーできる、オフセットの処理は自前でやるしかないけど
まあ6809や8086に比べたらかなり効率悪いコードになるけどね
700蟻人間 ◆T6xkBnTXz7B0
2020/09/25(金) 22:23:24.07ID:ogXn8IQh x86のC言語では、スタックに積み込まれた自動変数のデータは、SPが変更されてもスタックフレームを復元すれば、変更前と変わらずアクセスできる。SPの値もプッシュ・ポップできる訳であって。
701デフォルトの名無しさん
2020/09/25(金) 22:25:44.11ID:cdg8K9Zm702デフォルトの名無しさん
2020/09/25(金) 22:33:13.14ID:iQJ3d1Xe 一般的な日本の8bitPCで64KB空間しかないのにROMだけでもあれこれと数百キロバイト積んでるし、
VRAMもでかい。基本、z80も6502もフラットを要求するCとの相性はよくない。
VRAMもでかい。基本、z80も6502もフラットを要求するCとの相性はよくない。
703デフォルトの名無しさん
2020/09/25(金) 22:48:54.96ID:ZULCp3JG 6800てw
ワイが学生時代演習で使ったのが68000だったなぁ
今となっては何一つ覚えてないけど
ワイが学生時代演習で使ったのが68000だったなぁ
今となっては何一つ覚えてないけど
704デフォルトの名無しさん
2020/09/26(土) 01:53:27.55ID:JrFBwqTU もはやC++全く関係ない話だな
705デフォルトの名無しさん
2020/09/26(土) 06:33:34.63ID:JvTrRG8q706デフォルトの名無しさん
2020/09/26(土) 06:40:46.95ID:U+G6yEte >>705
> スタック領域変わったからと言ってSPの初期値以外に一体何を書き換えるんだよw
の答えはまだかな?
> 許して欲しいならちゃんとそう言えよ
> まあ逃げても追わねえでやるけど
そのまま返してやるからさw
> スタック領域変わったからと言ってSPの初期値以外に一体何を書き換えるんだよw
の答えはまだかな?
> 許して欲しいならちゃんとそう言えよ
> まあ逃げても追わねえでやるけど
そのまま返してやるからさw
707デフォルトの名無しさん
2020/09/26(土) 06:47:39.19ID:JvTrRG8q708デフォルトの名無しさん
2020/09/26(土) 06:49:33.64ID:U+G6yEte709デフォルトの名無しさん
2020/09/26(土) 06:51:36.58ID:JvTrRG8q710デフォルトの名無しさん
2020/09/26(土) 06:57:40.31ID:U+G6yEte711デフォルトの名無しさん
2020/09/26(土) 07:13:53.77ID:JvTrRG8q712デフォルトの名無しさん
2020/09/26(土) 07:27:56.00ID:U+G6yEte 何だこいつ?
いきなり絡んできて意味不明なこと言い出すとか通り魔かよw
いきなり絡んできて意味不明なこと言い出すとか通り魔かよw
713デフォルトの名無しさん
2020/09/26(土) 07:37:41.03ID:JvTrRG8q ここはC++スレだ
ゆえにC++でコード書いてないやつは価値ゼロだ
もう一度言う
おまえさんがゴミクズなのはC++でROM焼きしてないからだ
8080であろうが6809であろうが関係ない
C++でコード書いて得た知見を言え
それ以外の戯れ言はいらん
ゆえにC++でコード書いてないやつは価値ゼロだ
もう一度言う
おまえさんがゴミクズなのはC++でROM焼きしてないからだ
8080であろうが6809であろうが関係ない
C++でコード書いて得た知見を言え
それ以外の戯れ言はいらん
714デフォルトの名無しさん
2020/09/26(土) 08:42:15.83ID:U+G6yEte >>713
ROM焼きしてないだけでC++はガンガン使ってるけど?
thisポインタなんてstructへのポインタを自動生成してるだけ
初期のC++処理系でC言語に変換したコードとか見たことないのか?
ROM焼きしてないだけでC++はガンガン使ってるけど?
thisポインタなんてstructへのポインタを自動生成してるだけ
初期のC++処理系でC言語に変換したコードとか見たことないのか?
715デフォルトの名無しさん
2020/09/26(土) 08:47:39.20ID:JvTrRG8q716デフォルトの名無しさん
2020/09/26(土) 09:07:00.22ID:U+G6yEte717デフォルトの名無しさん
2020/09/26(土) 12:45:09.58ID:uIJkShC0 スタック上にある構造体を指すポインタはスタック領域を指すっていう
それだけの話で100レス以上も盛り上がれるなんて楽しそうで羨ましい
それだけの話で100レス以上も盛り上がれるなんて楽しそうで羨ましい
718デフォルトの名無しさん
2020/09/26(土) 12:57:51.80ID:U+G6yEte 上から目線で頓珍漢な結論を開陳してる君の方が幸せそうだがw
719デフォルトの名無しさん
2020/09/26(土) 13:01:37.96ID:JvTrRG8q >>718
エテ公の自己紹介乙
エテ公の自己紹介乙
720デフォルトの名無しさん
2020/09/26(土) 13:10:27.66ID:U+G6yEte 話の流れも読めないバカがなんか言ってるなw
惨めにならないんだろうか?
惨めにならないんだろうか?
721デフォルトの名無しさん
2020/09/26(土) 13:18:24.22ID:JvTrRG8q 上から目線で頓珍漢な結論を開陳
上から目線で頓珍漢な結論を開陳
上から目線で頓珍漢な結論を開陳
上から目線で頓珍漢な結論を開陳
上から目線で頓珍漢な結論を開陳
722デフォルトの名無しさん
2020/09/26(土) 13:25:59.50ID:JvTrRG8q723デフォルトの名無しさん
2020/09/26(土) 15:07:52.90ID:U+G6yEte >>722
ん?
633のどこがおかしいの?
結局、
>> 設定値を変えるだけだろとか簡単に言われても困る。
> スタックへのアクセスってよほどトリッキーなことをしない限りSP相対だぞ
> スタック領域変わったからと言ってSPの初期値以外に一体何を書き換えるんだよw
の回答もないんだけど、君が答えてくれるのかな?w
ん?
633のどこがおかしいの?
結局、
>> 設定値を変えるだけだろとか簡単に言われても困る。
> スタックへのアクセスってよほどトリッキーなことをしない限りSP相対だぞ
> スタック領域変わったからと言ってSPの初期値以外に一体何を書き換えるんだよw
の回答もないんだけど、君が答えてくれるのかな?w
724デフォルトの名無しさん
2020/09/26(土) 15:21:46.24ID:RuVJsWZT 当初は技術論をぶつけあってるようで興味深く読ませてもらってた
難しくて理解できないことも多かったけど
いまはもうただの罵倒合戦になっちゃったね残念です
難しくて理解できないことも多かったけど
いまはもうただの罵倒合戦になっちゃったね残念です
725デフォルトの名無しさん
2020/09/26(土) 15:47:25.99ID:ZTwAa6WW >>723
説明したとおり、昔の処理系は移動した先のスタックエリアがそこに常にあるとは保証されないからその対応は必要。
今はユーザーモードならOSがスレッドコンテキストを保証してるから頭使わないだけ。
説明したとおり、昔の処理系は移動した先のスタックエリアがそこに常にあるとは保証されないからその対応は必要。
今はユーザーモードならOSがスレッドコンテキストを保証してるから頭使わないだけ。
726デフォルトの名無しさん
2020/09/26(土) 15:57:43.88ID:U+G6yEte727デフォルトの名無しさん
2020/09/26(土) 16:18:49.58ID:ZTwAa6WW スレッドセーフだったAPIがスレッドセーフじゃなくなりました!!
って言われて、はぁ?と言いながらソースを修正する、みたいな。こんな具体例でいいですか?
って言われて、はぁ?と言いながらソースを修正する、みたいな。こんな具体例でいいですか?
728はちみつ餃子 ◆8X2XSCHEME
2020/09/26(土) 16:40:11.75ID:d+bfMgei ワイはそこまで昔のことは知らんし、組み込み系の話もわからんけど、
MS-DOS (16bit) 時代のプログラミングの知識だと
データの位置はスタックポインタからの相対というだけではなく
セグメントレジスタの内容も加算される。
スタックセグメントレジスタとデータセグメントレジスタが一致するときは
単純なのだが、そうでないときはセグメントの値とセグメント内のオフセットを組にして
ポインタとして扱わなければならない。
(いわゆる far pointer のこと。
Windows SDK のヘッダファイルの中に near と far がマクロ定義されているのはたぶんそのなごり。)
C のプログラムとして書く分にはメモリモデル (セグメントの扱い) を決め打ちして、
コンパイラはそれに従って整合性を取ってくれるから素直な C プログラムなら問題にならないが、
凝ったメモリ管理をしようとするとそう単純にはいかないことはあったかもしれん。
MS-DOS (16bit) 時代のプログラミングの知識だと
データの位置はスタックポインタからの相対というだけではなく
セグメントレジスタの内容も加算される。
スタックセグメントレジスタとデータセグメントレジスタが一致するときは
単純なのだが、そうでないときはセグメントの値とセグメント内のオフセットを組にして
ポインタとして扱わなければならない。
(いわゆる far pointer のこと。
Windows SDK のヘッダファイルの中に near と far がマクロ定義されているのはたぶんそのなごり。)
C のプログラムとして書く分にはメモリモデル (セグメントの扱い) を決め打ちして、
コンパイラはそれに従って整合性を取ってくれるから素直な C プログラムなら問題にならないが、
凝ったメモリ管理をしようとするとそう単純にはいかないことはあったかもしれん。
729デフォルトの名無しさん
2020/09/26(土) 17:22:32.99ID:U+G6yEte730デフォルトの名無しさん
2020/09/26(土) 17:29:29.79ID:JvTrRG8q こいつメモリコンパクション知らんの?
731デフォルトの名無しさん
2020/09/26(土) 17:35:47.60ID:U+G6yEte732デフォルトの名無しさん
2020/09/26(土) 17:36:30.11ID:JvTrRG8q メモリーコンパクションて昔の処理系でしょ
今の処理系でやるやつあんの?w
今の処理系でやるやつあんの?w
733デフォルトの名無しさん
2020/09/26(土) 17:54:42.30ID:ZTwAa6WW あーコンパックショックね。昔あったあった。
734デフォルトの名無しさん
2020/09/26(土) 17:55:50.69ID:U+G6yEte 昔といえば昔かな、>>725はもっと昔の話かと思ってたけど
で、メモリーコンパクションがどう関係するって?
で、メモリーコンパクションがどう関係するって?
735デフォルトの名無しさん
2020/09/26(土) 18:03:51.62ID:ZTwAa6WW これだけ説明して何も分からないならそれまででしょう。
OSに感謝してC++富豪プログラミングを謳歌してください。
OSに感謝してC++富豪プログラミングを謳歌してください。
736デフォルトの名無しさん
2020/09/26(土) 18:41:14.25ID:U+G6yEte 説明できずに遁走
と言うことでいいかなw
まあそうだろうとは思ってたけど
と言うことでいいかなw
まあそうだろうとは思ってたけど
737デフォルトの名無しさん
2020/09/26(土) 18:44:55.61ID:ZTwAa6WW もちろんだ。それでキミの自尊心が傷つかないで済むならそれでいい。
738デフォルトの名無しさん
2020/09/26(土) 19:34:56.51ID:U+G6yEte 了解
739はちみつ餃子 ◆8X2XSCHEME
2020/09/26(土) 23:28:50.69ID:d+bfMgei >>729
ひとつのプログラムの中では整合性は維持されるけど、
別のタスクとやりとりするときにメモリモデルが違うと
near pointer と far pointer を明示的に使い分けないといけないことがある。
わかってればとりたてて難しいことではないのだけど、
言語仕様に沿ってれば後はコンパイラにお任せというわけにはいかない。
知ってる必要はあった。
話題の発端 (よりは少し後?) でスタックポインタとの相対番地は
呼出し側で計算するんだから……という話が出ていたので、
他の要素 (セグメント) が絡むアーキテクチャのことを思い出したなぁという余談。
ひとつのプログラムの中では整合性は維持されるけど、
別のタスクとやりとりするときにメモリモデルが違うと
near pointer と far pointer を明示的に使い分けないといけないことがある。
わかってればとりたてて難しいことではないのだけど、
言語仕様に沿ってれば後はコンパイラにお任せというわけにはいかない。
知ってる必要はあった。
話題の発端 (よりは少し後?) でスタックポインタとの相対番地は
呼出し側で計算するんだから……という話が出ていたので、
他の要素 (セグメント) が絡むアーキテクチャのことを思い出したなぁという余談。
740デフォルトの名無しさん
2020/09/26(土) 23:47:45.08ID:Hf1Mq2xd741デフォルトの名無しさん
2020/09/27(日) 02:34:34.90ID:S4au1vJD far ポインタ、今ここで見なければたぶん一生わすれたままだったのに
ちなみにMS-DOS時代は全部のセグメントをひとつにまとめた .COM っていう実行形式あったな
いまでも動くのかしらんけど
ちなみにMS-DOS時代は全部のセグメントをひとつにまとめた .COM っていう実行形式あったな
いまでも動くのかしらんけど
742デフォルトの名無しさん
2020/09/27(日) 05:20:36.19ID:PnF6Ozyr
743はちみつ餃子 ◆8X2XSCHEME
2020/09/27(日) 08:55:07.39ID:WOc0AJ0G >>741
Windows では今でも com 形式を実行できるよ。
環境変数 PATHEXT の Windows でのデフォルト設定を見ればわかるが、先頭に com が入ってる。
(同じ名前であれば exe より com が優先されるということ。)
C:\Windows\System32 の下にはいくつか com 形式の実行ファイルはあるし。
ただ (com 形式に限らず) 昔のプログラムは直接にデバイスを叩いていたりして、
さすがにサポートしきれていない場合もあるから、昔のプログラムが何もかもそのまま
動くというほどではない。
Windows では今でも com 形式を実行できるよ。
環境変数 PATHEXT の Windows でのデフォルト設定を見ればわかるが、先頭に com が入ってる。
(同じ名前であれば exe より com が優先されるということ。)
C:\Windows\System32 の下にはいくつか com 形式の実行ファイルはあるし。
ただ (com 形式に限らず) 昔のプログラムは直接にデバイスを叩いていたりして、
さすがにサポートしきれていない場合もあるから、昔のプログラムが何もかもそのまま
動くというほどではない。
744デフォルトの名無しさん
2020/09/27(日) 08:59:30.78ID:p6y4XMAK745デフォルトの名無しさん
2020/09/27(日) 09:33:39.25ID:QntRtEDW >>743
たとえばC:\Windows\System32\format.comなんかあるけど
dumpbin /headers format.comとやると中身はexeだと出てくるぞ
masmに付いてたexe2binで出力した本当のtinyモデルのやつは
x86までで、x64のwindowsでは実行できんぞ
たとえばC:\Windows\System32\format.comなんかあるけど
dumpbin /headers format.comとやると中身はexeだと出てくるぞ
masmに付いてたexe2binで出力した本当のtinyモデルのやつは
x86までで、x64のwindowsでは実行できんぞ
746はちみつ餃子 ◆8X2XSCHEME
2020/09/27(日) 11:05:00.24ID:WOc0AJ0G747デフォルトの名無しさん
2020/09/27(日) 11:34:08.96ID:QntRtEDW format.comはdosの時代からずっと拡張子.comのままだね
int 21h, ah=4bhで指定するファイル名が変わると困るから
int 21h, ah=4bhで指定するファイル名が変わると困るから
748デフォルトの名無しさん
2020/09/27(日) 11:41:49.52ID:QntRtEDW ちなx64で16bitプログラムが実行できないのはm$の恣意的な制限で
ホストx64、ゲストx86のvmアンダーなら.com形式のプログラムも実行できる
ホストx64、ゲストx86のvmアンダーなら.com形式のプログラムも実行できる
749デフォルトの名無しさん
2020/09/27(日) 12:07:35.19ID:s60mNpHS Windows 95 の command.com ですら exe 形式
ライブラリ含むと64KB制限は結構きつい
ライブラリ含むと64KB制限は結構きつい
750デフォルトの名無しさん
2020/09/27(日) 12:21:08.36ID:B8/m6o5T 確か、int 21hのDOS Function Callは、今のWindowsではサポートされなく
なったと聞いた様な。
なったと聞いた様な。
751デフォルトの名無しさん
2020/09/27(日) 12:41:38.04ID:HRFRA9zs kakaku.com
752デフォルトの名無しさん
2020/09/27(日) 15:19:28.84ID:PnF6Ozyr 今に生きろよw
753デフォルトの名無しさん
2020/09/27(日) 15:49:06.00ID:tl/HXTc2 じじいは昔話しだすと止まらなくなる
ボケてないんだったら自覚して自重しろ
ボケてないんだったら自覚して自重しろ
754デフォルトの名無しさん
2020/09/27(日) 16:17:04.29ID:kqCKlQkp .comはCPMの名残だけど
全セグメントを一つにまとめたってのは
ちょっと違くないか?
別に違うセグメントにアクセスしても問題無く動いてたろ?
全セグメントを一つにまとめたってのは
ちょっと違くないか?
別に違うセグメントにアクセスしても問題無く動いてたろ?
755はちみつ餃子 ◆8X2XSCHEME
2020/09/27(日) 16:28:23.36ID:WOc0AJ0G >>754
たぶん *.com と *.exe の違いはMS-DOS のイメージローダの都合、というものじゃないでしょうか?
*.exe はテキストの前に、セグメントアロケーション情報を持っていて、実行ファイルをロードする歳に、関係するセグメントオフセットを実セグメントに変更します
*.com にはそれがなく、生のテキストがメモリ上に配置されるだけ
*.com であってもプログラマが自分でオフセット・セグメントを把握したり、スタックポインタ・スタックセグメントを設定しているのだったら、それはそれで問題なく動くでしょう
たぶん *.com と *.exe の違いはMS-DOS のイメージローダの都合、というものじゃないでしょうか?
*.exe はテキストの前に、セグメントアロケーション情報を持っていて、実行ファイルをロードする歳に、関係するセグメントオフセットを実セグメントに変更します
*.com にはそれがなく、生のテキストがメモリ上に配置されるだけ
*.com であってもプログラマが自分でオフセット・セグメントを把握したり、スタックポインタ・スタックセグメントを設定しているのだったら、それはそれで問題なく動くでしょう
757デフォルトの名無しさん
2020/09/27(日) 17:06:17.30ID:QntRtEDW 簡単な実験
echo テ>test.com
test.com
echo テ>test.com
test.com
758デフォルトの名無しさん
2020/09/27(日) 19:47:03.79ID:SosvOXW5 PC9801の頃に、漢字 2字? のファイルを comで保存して、IPLん走らせるみたいのあったな
たしかその 4バイトは 0番地に分岐する命令だったような
たしかその 4バイトは 0番地に分岐する命令だったような
759デフォルトの名無しさん
2020/09/27(日) 20:35:56.16ID:QntRtEDW ぴぽ
760デフォルトの名無しさん
2020/09/28(月) 11:44:17.88ID:PXJ7xAyj 美乳
761デフォルトの名無しさん
2020/09/30(水) 00:23:01.22ID:Sia2lU3A >>759
いまでも鮮やかに蘇る
いまでも鮮やかに蘇る
762デフォルトの名無しさん
2020/09/30(水) 12:14:30.74ID:k+HGkMpo How many files (0-15) ?
NEC N88-BASIC Version 2.1
Copyright (C) 1981 by Microsoft
56548 bytes free
Ok
NEC N88-BASIC Version 2.1
Copyright (C) 1981 by Microsoft
56548 bytes free
Ok
763デフォルトの名無しさん
2020/09/30(水) 20:39:25.56ID:48ryTnta _DEBUG で区切っているコードがあり、
releaseモードで実行したのに
_DEBUGで切っているコードを実行されてしまいます。
プロジェクトプロパティにて宣言していないのは確認しています。
なにか解決になるヒントだけでもいただけないでしょうか?
releaseモードで実行したのに
_DEBUGで切っているコードを実行されてしまいます。
プロジェクトプロパティにて宣言していないのは確認しています。
なにか解決になるヒントだけでもいただけないでしょうか?
764デフォルトの名無しさん
2020/09/30(水) 20:51:05.98ID:/J4p2JyL765デフォルトの名無しさん
2020/09/30(水) 22:08:07.49ID:48ryTnta >>764
スレチすみませんでした。
スレチすみませんでした。
766デフォルトの名無しさん
2020/10/01(木) 09:15:47.76ID:oZeTafce Releaseモードにしたとき自動で入るのはNDEBUGだろ
その昔、ソースコードの中で#undefしてる大タコなやつがいた
その昔、ソースコードの中で#undefしてる大タコなやつがいた
767デフォルトの名無しさん
2020/10/01(木) 12:08:12.26ID:OaA9a4hN 間接話法による自己紹介とはなんと慎み深いお方なんだ
768デフォルトの名無しさん
2020/10/01(木) 13:35:09.79ID:27/Dd+rP ここ見てるとC++使いは性格悪いのが多いって感じがする
769デフォルトの名無しさん
2020/10/01(木) 14:16:23.58ID:QPXIh54Z 昔はこのスレももっとまともな人が多かったと思うけど、いつの間にか一部のガラの悪い奴らの下らない罵り合いばかり見せられて人が去っていったのかなと思う。
770デフォルトの名無しさん
2020/10/01(木) 14:19:30.67ID:WQPTDVBo ここで聞くより調べたほうが大抵早いし
なんでこんなところに来るのかわかんない
なんでこんなところに来るのかわかんない
771はちみつ餃子 ◆8X2XSCHEME
2020/10/01(木) 14:31:52.80ID:i8Yvf3kp 入り組んだ仕様の組み合わせで起こることならともかく、
簡単に調べられることだと回答も仕様 (またはどっかの解説)
をコピペするか URL を貼るだけになるからつまらんのだよなー。
そのワンステップ必要? という気持ちにはなる。
本物の初心者がそれすらできないことがあるのも知ってるから、
あまり無碍にはしないようにしてるけど、
つまらんなーという気持ちは残る。
簡単に調べられることだと回答も仕様 (またはどっかの解説)
をコピペするか URL を貼るだけになるからつまらんのだよなー。
そのワンステップ必要? という気持ちにはなる。
本物の初心者がそれすらできないことがあるのも知ってるから、
あまり無碍にはしないようにしてるけど、
つまらんなーという気持ちは残る。
772デフォルトの名無しさん
2020/10/01(木) 14:45:07.87ID:27/Dd+rP >>770
見事な自己矛盾
見事な自己矛盾
773デフォルトの名無しさん
2020/10/01(木) 14:58:05.69ID:WQPTDVBo 別に質問しに来てるわけじゃないからな
質問する人がどういう経路で来るのか気になる
質問する人がどういう経路で来るのか気になる
774デフォルトの名無しさん
2020/10/01(木) 15:04:41.08ID:15Icpaxe >>769
2|5ちゃん全体がそれ
2|5ちゃん全体がそれ
■ このスレッドは過去ログ倉庫に格納されています
