Re: [問題] 用變數宣告陣列

看板C_and_CPP作者 (好人超)時間16年前 (2009/11/28 22:08), 編輯推噓1(103)
留言4則, 4人參與, 最新討論串2/5 (看更多)
剛剛嘗試了一下,發現兩種方式產生的組合語言長度相差甚多 使用平台:ubuntu 9.04 x86 32bit 編譯器 :gcc version 4.3.3 (Ubuntu 4.3.3-5ubuntu4) 編譯指令:gcc test.c -std=c99 -S int main() { int arr[30]; return 0; } 組合語言檔:http://james545.myweb.hinet.net/test.s (共 21 行) 與 int main() { int i = 30; int arr[i]; return 0; } 組合語言檔:http://james545.myweb.hinet.net/2test.s (共 93 行) 不過我看不太懂為什麼後者會多出那麼多的指令數量... -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 59.127.184.214

11/28 22:38, , 1F
最佳化呢?
11/28 22:38, 1F

11/28 22:45, , 2F
不懂組合語, 不過第二個估計是把容器寫進去幫忙管理了
11/28 22:45, 2F

11/28 23:20, , 3F
大概是alloca變成inline了吧
11/28 23:20, 3F

11/29 00:54, , 4F
我猜是額外的堆疊配置動作...
11/29 00:54, 4F
文章代碼(AID): #1B4IxSUM (C_and_CPP)
文章代碼(AID): #1B4IxSUM (C_and_CPP)