C言語なら俺に聞け 163 (987レス)
上下前次1-新
抽出解除 必死チェッカー(本家) (べ) 自ID レス栞 あぼーん
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等のバグ利用がテクニックだったけど、今じゃバグの温床、セキュリティホール扱いだね。
の指摘通り、実体がなく実行時に生成されることを確認できたとして打ち切ってしまいました
115: 警備員[Lv.1][新芽] (ワッチョイ 1e86-ztXh) [sage] 2024/09/13(金) 13:50:08.30 ID:cjEIJ97r0(2/4) AAS
>>108ありがとうございます
そもそも >>8888(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*