- C言語なら俺に聞け(入門編)Part 127©2ch.net
244 :デフォルトの名無しさん[sage]:2015/03/15(日) 00:23:09.46 ID:J5ZoTwT2 - gcc の場合だけど、
subl $32, %esp movw $25185, 25(%esp) movb $99, 27(%esp) leal 25(%esp), %eax movl %eax, 28(%esp) となっていて、本題とは関係のないけど "ab" をまとめて word で渡してるのな。 'a':97, 'b':98, 25185 == (98<<8) + 97 "leal .." と "movl ..." から推測して、for loop 内の printf() でポインタ(*p) そのものの値(アドレス値)を見てみると、 for (p = a; p <= a+3; p++) { printf("[%d] %hhd\n", *p, (int)p & 0x000000ff); } [97] 41 [98] 42 [99] 43 [44] 44 となっていて、>>236 の「コードからchar型ポインタの一部の可能性が高い」 の通りとなっている。vc2005は持っていないから分からん。
|