看板 C_and_CPP 關於我們 聯絡資訊
剛剛嘗試了一下,發現兩種方式產生的組合語言長度相差甚多 使用平台: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
dendrobium:最佳化呢? 11/28 22:38
devilarise:不懂組合語, 不過第二個估計是把容器寫進去幫忙管理了 11/28 22:45
sunneo:大概是alloca變成inline了吧 11/28 23:20
weiyucsie:我猜是額外的堆疊配置動作... 11/29 00:54