C言語なら俺に聞け 163 (987レス)
前次1-
抽出解除 必死チェッカー(本家) (べ) 自ID レス栞 あぼーん

107: 警備員[Lv.5][新芽] (ワッチョイ 1eeb-ztXh) [sage] 2024/09/13(金) 09:12:47.27 ID:cjEIJ97r0(1/4) AAS
>>106
106(1): デフォルトの名無しさん (ワッチョイ 65cd-RtM0) [sage] 2024/09/13(金) 08:23:17.89 ID:ykZRrldI0(1/2) AAS
>>101
"hoge"は長さちょうど32ビットだから即値でスタックに書き込むようになってるということなら
最適化によってそこまで省略されてるわけでsに実体がない件とはあまり関係ないな
最適化オフにするかもっと長い文字列で実験してみては
ありがとうございます

もう少し正確に書けばよかったのですが、4字と '\0' の2回に分けて転記していました
また、hogeを長くして(10字くらい?)試すと、やはり 4字ずつ整数にパックして即値で転記していました

もっと長大な文字列試せば、別にアロケートされたそれをコピーするコードが吐かれたかもしれませんが、>>92
92(2): デフォルトの名無しさん (ワッチョイ a510-IFMZ) [sage] 2024/09/11(水) 09:49:35.14 ID:h52e7Ahm0(1) AAS
> sには実体がない、とはどういうことですか?
変数エリアに書き込まれていない数値、データ。
プログラム上で要求された時にコンパイル時や関数によってその都度作られる仕様・・・かな?しらんけど。

>91
>プログラムコードも書換できました
それはむしろ”技術”扱いだったな。
サブルーチンでジャンプ先やIOポートを書き換えて・・・て。
昔はCPU等のバグ利用がテクニックだったけど、今じゃバグの温床、セキュリティホール扱いだね。
の指摘通り、実体がなく実行時に生成されることを確認できたとして打ち切ってしまいました
115: 警備員[Lv.1][新芽] (ワッチョイ 1e86-ztXh) [sage] 2024/09/13(金) 13:50:08.30 ID:cjEIJ97r0(2/4) AAS
>>108
108(1): はちみつ餃子◆8X2XSCHEME (ワッチョイ 65e8-hr+9) [sage] 2024/09/13(金) 10:12:57.71 ID:9XTDQHQm0(1/2) AAS
C の仕様は抽象機械の動作として記述される。
抽象機械の動作をどのように実際の機械と対応させるかは自由で、見かけ上の動作が同じならどういう機械語になってもいい。
生成された機械語から言語仕様を理解しようとすべきではないよ。

低レイヤプログラミングするならどう対応付くか知る必要がある場合もあるのは否定しないけど……
ありがとうございます

そもそも >>88
88(1): デフォルトの名無しさん (ワッチョイ a6b5-RtM0) [sage] 2024/09/11(水) 08:00:07.84 ID:eq6A6T9x0(1) AAS
>>81
アセンブラにして考えるとわかりやすい

char s[] = "hoge";
アセンブラの表現↓
s:
   .db "hoge¥0"

char *s = "hoge";
アセンブラの表現↓
s_org:
   .db "hoge¥0"
s:
   .dw s_org

上の場合書き換えようにもsには実体がない
アドレス定義ラベルでしかない

*ただし完全に最適化されると下も上と同じになる
   
で sの実体がないとはどういうことか、というのが疑問だったためで、言語の仕様(というか実装)がどうかには着目していませんでした

printf("%s\n", s); が .sではputs(s); に置き換えられていたり
そうだよな〜
116: 警備員[Lv.1][新芽] (ワッチョイ 1e49-ztXh) [sage] 2024/09/13(金) 13:59:45.58 ID:cjEIJ97r0(3/4) AAS
あー、実装には注目してるのか>自分
130: 警備員[Lv.5][新芽] (ワッチョイ 1e21-ztXh) [sage] 2024/09/13(金) 20:41:46.32 ID:cjEIJ97r0(4/4) AAS
速度の最適化か、生成されるオブジェクトの小ささかのトレードオフなんだろうね
テスト用のコードは小さいから、後者は気にせずゴリゴリやってるのかな…
前次1-
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ AAサムネイル

ぬこの手 ぬこTOP 1.682s*