→ james732:extern SUM; 這行會有問題 05/05 23:23
推 walker2009:我好想吐... XDD 05/05 23:24
→ james732:不過這個真的有比較好懂嗎...XDDDDD 05/05 23:26
→ loveflames:我用的compiler能過,其實那行拿掉也沒差,本來就是混 05/05 23:26
→ loveflames:淆視聽用的 05/05 23:26
→ james732:原來如此 XDDD 05/05 23:27
→ loveflames:完全沒有1500這個數字 05/05 23:27
→ loveflames:extern那行改成"int SUM=1499;"的話,你能編譯過嗎 05/05 23:29
推 LPH66:printf 怎麼會是印 SUM 呢 XD 05/05 23:30
→ loveflames:用上了一點邪惡技巧,仔細看一下strcpy 05/05 23:31
※ 編輯: loveflames 來自: 140.134.226.149 (05/05 23:33)
推 LPH66:我是猜得到你想說什麼啦 但我的VC把1501給丟進sum裡去了lol 05/05 23:34
推 jawychiou:好邪惡的傢伙 XD 05/05 23:34
→ james732:原本程式在gcc可以編 extern改掉反而不行了 真神.... 05/05 23:35
→ loveflames:memcpy沒把SUM的值蓋掉? 05/05 23:35
→ loveflames:改成"int SUM=1499;"後反而不行? 05/05 23:36
推 LPH66:在我的VC上兩個都沒 XD 05/05 23:36
→ james732:啊 剛剛gcc不行是因為忘了把最後一行刪掉 XD 刪掉即可 05/05 23:37
→ loveflames:那sum()裡的strcpy有達成目的吧? 05/05 23:39
推 LPH66:就說兩個都沒了 XD 05/05 23:39
→ loveflames:附註一下,正確結果是1125750 05/05 23:40
推 netsphere:厲害 完全不想看code 05/05 23:42
→ loveflames:會不會是它沒有把變數連續放?不過這得看一下stack 05/05 23:45
推 LPH66:啊, 我懂了 裡面的之所以沒成功是因為我的VC備份了esi/edi 05/05 23:46
推 dendrobium:噁心+1 XD 05/05 23:46
→ LPH66:而外面的沒成功好像是因為一個神奇的 alignment... 05/05 23:47
→ LPH66:它變成了[sum][???][???][???][--SuM-][???][SUM] .... 05/05 23:48
→ LPH66:順帶一提, release 的最佳化會把 {} 給丟掉 XD 05/05 23:49
→ loveflames:放暫存器值備份的地方是在參數跟local變數之間? 05/05 23:50
推 LPH66:對 和 ebp 的備份放在一起 05/06 00:02
→ LPH66:不過各家 compiler 有沒有多備份真的說不準就是了... 05/06 00:03
→ LPH66:(因為會備份的原因應該是函式裡用到了它們) 05/06 00:04
→ loveflames:你指的備份是函式開頭push ebp、push xxx之類的沒錯吧 05/06 00:07
→ loveflames:你用的compiler是先備份再分配local變數的空間? 05/06 00:07
推 LPH66:唔...經你這麼一說才發現我好像弄錯了 @_@ 05/06 00:17
推 LPH66:我這裡的函式裡應該是這樣: Sum 對齊了 8 byte 05/06 00:22
→ LPH66:然後在那之後還有一個用意不明的 local 變數空間 05/06 00:22
→ LPH66:所以一共差了 8 byte... 05/06 00:22
→ loveflames:跟sUm差8 byte? 05/06 00:23
推 LPH66:你期望的是 [Sum][ebp][ret][SUM] 05/06 00:26
推 LPH66:但我這裡卻是 [Sum][???][unk][ebp][ret][SUM] 05/06 00:28
→ LPH66:[unk] 就是那個用意不明的 local 變數空間 05/06 00:28
→ LPH66:[???]則是因為對齊的關係空出來的空間 05/06 00:29
→ loveflames:unk???看來在push ebp後,偷塞了一些怪東西到stack 05/06 00:30
→ loveme00835:完全不想看+1 XD 05/06 00:36
※ 編輯: loveflames 來自: 140.134.226.149 (05/06 04:15)
推 LinuxC:不想看+1 老子我早就在腦中寫好了 05/06 09:02