C++相談室 part152
■ このスレッドは過去ログ倉庫に格納されています
1デフォルトの名無しさん
2020/07/12(日) 13:42:20.13ID:TX1mpKr6655デフォルトの名無しさん
2020/09/25(金) 13:31:16.91ID:cdg8K9Zm656デフォルトの名無しさん
2020/09/25(金) 13:43:22.03ID:3+LaQyVV 被害妄想というよりボキャ貧かw
なるほどな、今さらなことをドヤってるのも頭の更新が止まっている症状か
納得
なるほどな、今さらなことをドヤってるのも頭の更新が止まっている症状か
納得
657デフォルトの名無しさん
2020/09/25(金) 14:00:06.69ID:4ovx1Tzj >頭の更新
ほんそれ
ほんそれ
658デフォルトの名無しさん
2020/09/25(金) 14:09:34.94ID:u87G89iw >>652
でも、アセンブラならcall,push,pop,[ebp+xxx],[esp+xxx]はss:をしていなくても
勝手に stack segment相対になるから良いが、Cの引数にバッファのアドレスを
渡すような場合、ds:なのか、ss:なのかが分からないから、farアドレスにする
しかなくなってしまう。なので、ss=dsの状態にした方がCだと効率が良かった。
でも、アセンブラならcall,push,pop,[ebp+xxx],[esp+xxx]はss:をしていなくても
勝手に stack segment相対になるから良いが、Cの引数にバッファのアドレスを
渡すような場合、ds:なのか、ss:なのかが分からないから、farアドレスにする
しかなくなってしまう。なので、ss=dsの状態にした方がCだと効率が良かった。
659デフォルトの名無しさん
2020/09/25(金) 14:14:37.28ID:cdg8K9Zm 具体的に反論できないなら黙ってりゃいいのに…
660デフォルトの名無しさん
2020/09/25(金) 14:20:55.55ID:MA61Hr7D 64ビットになったらセグメントなんてどうでもよくなったな
661デフォルトの名無しさん
2020/09/25(金) 14:32:23.95ID:3+LaQyVV 対立してないのにどうやって反論するんだよ
それと何がどうだったという証言は論じゃないからな
それと何がどうだったという証言は論じゃないからな
662デフォルトの名無しさん
2020/09/25(金) 14:42:12.89ID:cdg8K9Zm >>661
お前はどうでもいいから無駄に絡んでくるな
>> 設定値を変えるだけだろとか簡単に言われても困る。
> スタックへのアクセスってよほどトリッキーなことをしない限りSP相対だぞ
> スタック領域変わったからと言ってSPの初期値以外に一体何を書き換えるんだよw
に対する答えが欲しいだけ
お前はどうでもいいから無駄に絡んでくるな
>> 設定値を変えるだけだろとか簡単に言われても困る。
> スタックへのアクセスってよほどトリッキーなことをしない限りSP相対だぞ
> スタック領域変わったからと言ってSPの初期値以外に一体何を書き換えるんだよw
に対する答えが欲しいだけ
663デフォルトの名無しさん
2020/09/25(金) 14:50:04.04ID:3+LaQyVV664デフォルトの名無しさん
2020/09/25(金) 15:17:28.57ID:cdg8K9Zm それこそ論点がないのにどう反駁しろと?
バカが横から絡んできて勝手にスッ転びました、どうしましょうか?
⇒ 放置しかないわなw
バカが横から絡んできて勝手にスッ転びました、どうしましょうか?
⇒ 放置しかないわなw
665デフォルトの名無しさん
2020/09/25(金) 15:39:37.04ID:3+LaQyVV >>664
じゃ被害妄想認めるんだな? ニヤニヤ
じゃ被害妄想認めるんだな? ニヤニヤ
666デフォルトの名無しさん
2020/09/25(金) 15:46:21.30ID:iQJ3d1Xe >>655
>SP相対
なんだよこれ。非力なチップでスタックフレームの実装でも始める気か?
8086のようなスタックフレーム考慮した楽ちんアドレッシングとかおまえの指摘は時代錯誤が多い。
当時のデバイスもROMやテープが当たり前だし設定値変えるだけとかほんと簡単に言ってくれる。
だいたい先頭にスタック置いて、今度はどうやってワークエリアの位置を確定する気だよ。
結局確定しないから後ろからってなるだけだ。
>SP相対
なんだよこれ。非力なチップでスタックフレームの実装でも始める気か?
8086のようなスタックフレーム考慮した楽ちんアドレッシングとかおまえの指摘は時代錯誤が多い。
当時のデバイスもROMやテープが当たり前だし設定値変えるだけとかほんと簡単に言ってくれる。
だいたい先頭にスタック置いて、今度はどうやってワークエリアの位置を確定する気だよ。
結局確定しないから後ろからってなるだけだ。
667デフォルトの名無しさん
2020/09/25(金) 16:41:04.34ID:cdg8K9Zm >>665
また意味不明なことを言い出した
まあ低能にありがちな行動だけどw
>>666
push/popってSP相対だろ
> 当時のデバイスもROMやテープが当たり前だし設定値変えるだけとかほんと簡単に言ってくれる。
どうせ変更するのにSPの初期値を変えるのが面倒とか意味わからん
ちなみに俺は8bit時代からの組込み屋でテープもEP-ROMも使ってたから当時の話とかでごまかそうとしても無駄だよ
> だいたい先頭にスタック置いて、今度はどうやってワークエリアの位置を確定する気だよ。
後ろから取ればいいだけだろ
ただなんとなく気持ち悪いから前からワークエリア、後ろからスタックってなっただけだと思うよ
また意味不明なことを言い出した
まあ低能にありがちな行動だけどw
>>666
push/popってSP相対だろ
> 当時のデバイスもROMやテープが当たり前だし設定値変えるだけとかほんと簡単に言ってくれる。
どうせ変更するのにSPの初期値を変えるのが面倒とか意味わからん
ちなみに俺は8bit時代からの組込み屋でテープもEP-ROMも使ってたから当時の話とかでごまかそうとしても無駄だよ
> だいたい先頭にスタック置いて、今度はどうやってワークエリアの位置を確定する気だよ。
後ろから取ればいいだけだろ
ただなんとなく気持ち悪いから前からワークエリア、後ろからスタックってなっただけだと思うよ
668デフォルトの名無しさん
2020/09/25(金) 16:53:17.35ID:3+LaQyVV 否定しないなあw
スタックへのアクセスはpush/popだけとか
自動変数にポインタ経由でアクセスするのがトリッキーとか
何だろこの人w
スタックへのアクセスはpush/popだけとか
自動変数にポインタ経由でアクセスするのがトリッキーとか
何だろこの人w
669デフォルトの名無しさん
2020/09/25(金) 16:54:42.59ID:3+LaQyVV > EP-ROMも使って【た】
過去形だね
C++でファームウエア書いてないってことか
過去形だね
C++でファームウエア書いてないってことか
670デフォルトの名無しさん
2020/09/25(金) 16:58:24.91ID:iQJ3d1Xe671デフォルトの名無しさん
2020/09/25(金) 17:11:48.04ID:cdg8K9Zm672デフォルトの名無しさん
2020/09/25(金) 17:13:00.93ID:cdg8K9Zm673デフォルトの名無しさん
2020/09/25(金) 17:20:52.32ID:3+LaQyVV674デフォルトの名無しさん
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の名残だけど
全セグメントを一つにまとめたってのは
ちょっと違くないか?
別に違うセグメントにアクセスしても問題無く動いてたろ?
全セグメントを一つにまとめたってのは
ちょっと違くないか?
別に違うセグメントにアクセスしても問題無く動いてたろ?
■ このスレッドは過去ログ倉庫に格納されています
ニュース
- 自民・麻生太郎 副総裁 石破政権の1年は「どよーん」 高市政権の発足で「何となく明るくなった」「世の中のことが決まり動いている」 [Hitzeschleier★]
- 東京都「都民の税金1.5兆円が国に奪われている」「全国に分配されている」に地方民ブチギレ [Hitzeschleier★]
- JA全農が「新おこめ券」…来年9月末の有効期限を新設、必要経費のみ上乗せ [蚤の市★]
- 【27歳会社員】「自慰行為に使うために」コインランドリーの乾燥機から24歳女性の下着など計11点(時価8万2080円相当)盗んだ疑い [nita★]
- 1人3千円の食品高騰対策、何に使える? あいまいなまま衆院通過 [蚤の市★]
- 【おこめ券】鈴木憲和農相 小泉前農相の備蓄米放出を“反省”「備蓄の円滑な運営を図ってまいります」 [Hitzeschleier★]
- トランプ、G7に代わるcore 5を発表 [805596214]
- 為末大「ラーメン屋の行列を、年寄りが1万円渡してきて順番譲ってくれと言ったら? 答えられない問題だよ。」 [592058334]
- 麻生太郎が石破政権の1年を酷評「どよーんとして何も動かない感じだったな。それに引き換え高市政権は物事が動いている」 [597533159]
- 【速報】室井佑月、米山隆一との離婚を決意wwwwwwwwwwwwwwwwwwww [802034645]
- 【実況】博衣こよりのえちえちダンガンロンパ2🧪★4
- 官僚「台湾有事についての質問か、『政府として逐一答えない』と…(カタカタカタ)」高市「私1人で答弁できるわよ!」 [972432215]
