看板 Grad-ProbAsk 關於我們 聯絡資訊
※ 引述《ssssIssss (O_O)》之銘言: : 抱歉,我現在手機沒電所以無法拍題目,等等補上orz : 想請問一下104台大資工硬體第一大題的答案大大們怎麼回答,查了好久都沒什麼結果QQ : 1.有沒有什麼ISA是沒有register的? : 2.若ISA裡有超級大量的register(題目給1024個),是好還是壞? : -->我個人覺得可能在power上會有瓶頸? : 3.把general purpose register分為caller-save和callee-save,對什麼procedure是有 : 利的? : 4.為什麼現在要將register分這麼多種類(浮點數、一般、向量暫存器),若全都由一般 : 暫存器取代會比較好嗎? : 還望大大們一起討論了 關於這篇, 下面HE大說如果要對一個function call 10000次,caller>>callee 因為對 caller而言,callee saved register是不變的。我可以接受calle saved register 不變 ,但是為什麼這樣就用caller比較好呢? 我看到一篇,http://redbug0314.blogspot.tw/2007/06/calling-convention.html 他說:由於 c convention 規定 stack frame 的清理由呼叫端(caller)負責,因此對 同一個函式呼叫一千次,其 stack frame cleanup routine需 1000 份(位於呼叫點,由 編譯器加入)。而用pascal convention,一個function被called一千次如果由callee去 負責的話只要一份stack frame cleanup rountine,這樣不是指多次call function的時候 使用callee saved register 會比較好嗎? 對calling convention實在是很不了解 來請教一下 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 140.112.25.105 ※ 文章網址: https://www.ptt.cc/bbs/Grad-ProbAsk/M.1485244239.A.9D9.html
HEroKuma: 前面的敘述跟後面的結論好像打到自己臉惹XDD 01/24 21:28
HEroKuma: 應該是callee好 可以讓caller的負擔比較輕 01/24 21:29
ssssIssss: 完了,覺得讀越久腦袋越差QQ 01/25 10:05
ssssIssss: 我理解是,c convention是使用caller-save register, 01/25 10:20
ssssIssss: 規定由caller負責,而這樣會使stack frame cleanup rou 01/25 10:20
ssssIssss: tine很大的負擔 01/25 10:20
ssssIssss: 而使用pascal calling convention,就是使用caller-sav 01/25 10:21
ee
ssssIssss: e register,因為是由callee負責,所以若大量呼叫stack 01/25 10:21
ssssIssss: frame cleanup routine也只需要一份 01/25 10:21
ssssIssss: 所以總結來說是callee比較好? 01/25 10:22
ssssIssss: (完全沒有概念,這樣理解不知道是否正確orz) 01/25 10:22
總地來說,多次呼叫function我覺得用callee-saved 較好 ※ 編輯: Transfat (140.112.25.105), 01/25/2017 11:21:19 ※ 編輯: Transfat (140.112.25.105), 01/25/2017 11:21:46 ※ 編輯: Transfat (140.112.25.105), 01/25/2017 11:22:18 ※ 編輯: Transfat (140.112.25.105), 01/25/2017 11:23:00
ssssIssss: 讚讚 01/25 11:58