作者Transfat (Transfat)
看板Grad-ProbAsk
標題Re: [理工] 104台大資工 計組
時間Tue Jan 24 15:50:37 2017
※ 引述《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