C言語なら俺に聞け 163 (987レス)
上下前次1-新
抽出解除 レス栞
リロード規制です。10分ほどで解除するので、他のブラウザへ避難してください。
106(1): デフォルトの名無しさん (ワッチョイ 65cd-RtM0) [sage] 2024/09/13(金) 08:23:17.89 ID:ykZRrldI0(1/2) AAS
>>101101(1): 警備員[Lv.7][新芽] (ワッチョイ f931-ztXh) [sage] 2024/09/12(木) 00:58:15.86 ID:QGeKjVfA0(1) AAS
>>92 ありがとうございました(sには実態がない)
gcc -S test.c
で .s を出力して眺めてみると、そのような感じになっていました
最適化と、AT&Tのオペランドが逆なのに慣れず読みにくかったですが
"hoge" は「実体」が .data に置かれ、実行時にスタックにコピーされるのかと想像してましたが、実装がどうあれ、スタッフ上に "hoge" を置くための元を実体というのは違うと思いました
実際、"hoge" は .db でアロケートされず、4字は 32ビットの数値定数とされ、スタックに即値で転記されていました(実行時に生成されていました)
# とても伝わりにくいと思いますが…
"hoge"は長さちょうど32ビットだから即値でスタックに書き込むようになってるということなら
最適化によってそこまで省略されてるわけでsに実体がない件とはあまり関係ないな
最適化オフにするかもっと長い文字列で実験してみては
107: 警備員[Lv.5][新芽] (ワッチョイ 1eeb-ztXh) [sage] 2024/09/13(金) 09:12:47.27 ID:cjEIJ97r0(1/4) AAS
>>106
ありがとうございます
もう少し正確に書けばよかったのですが、4字と '\0' の2回に分けて転記していました
また、hogeを長くして(10字くらい?)試すと、やはり 4字ずつ整数にパックして即値で転記していました
もっと長大な文字列試せば、別にアロケートされたそれをコピーするコードが吐かれたかもしれませんが、>>9292(2): デフォルトの名無しさん (ワッチョイ a510-IFMZ) [sage] 2024/09/11(水) 09:49:35.14 ID:h52e7Ahm0(1) AAS
> sには実体がない、とはどういうことですか?
変数エリアに書き込まれていない数値、データ。
プログラム上で要求された時にコンパイル時や関数によってその都度作られる仕様・・・かな?しらんけど。
>91
>プログラムコードも書換できました
それはむしろ”技術”扱いだったな。
サブルーチンでジャンプ先やIOポートを書き換えて・・・て。
昔はCPU等のバグ利用がテクニックだったけど、今じゃバグの温床、セキュリティホール扱いだね。
の指摘通り、実体がなく実行時に生成されることを確認できたとして打ち切ってしまいました
上下前次1-新書関写板覧索設栞歴
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ AAサムネイル
ぬこの手 ぬこTOP 0.046s