Re: [程式] 記憶體的問題
看板GameDesign (遊戲設計)作者jasonlurey (我要冰生脾酒!!!!)時間18年前 (2007/08/20 23:21)推噓0(0推 0噓 0→)留言0則, 0人參與討論串7/7 (看更多)
※ 引述《littleshan (我要加入劍道社!)》之銘言:
: ※ 引述《jasonlurey (我要冰生脾酒!!!!)》之銘言:
: : 我來獻醜 可能有誤
: : 在embedded system中 (PC desktop是不是這樣我不確定)
: : 對C而言 記憶體會分成stack和heap這兩種東西
: : stack只能push/pop, 通常是用來放local variables
: : heap可以隨你抽插 (請別西斯), 通常會放static/global variables
: 請問 embedded system 上是「只」會分 stack 和 heap 嗎?
正確一點的說法 應該是對C而言, 主要會分這兩個東西
但我不確定是不是還有別的
而physical上是如何map, 不同平台應該是不同的
(但應該還是map到system memory, 當然想不開也可以map到disk =,=a)
: 在 x86 PC 上面還會有一塊 data segment
: 而 static/global 是放在 data segment 上
: 而它們的位址是 compile/link 的時候就已經確定好
: heap 只會給 dynamic allocate 出來的變數使用
: 它們的位址要到 runtime 才決定
感覺上data segement會比較像cache的角色, 但不是以cache的方式工作
教科書上有人稱之為scrach-pad memory, 或tightly coupled memory (TCM)
主要可能是一個小而快的SRAM, 可以放重要且常用的資料
若有辦法將Heap map到data segment, 自然static/global data就會放在DS
(這在linker的option應該是可以設參數)
不知道有沒有辦法把Stack map到DS上
我上一次學x86是在1999年 希望沒誤人子弟 XD
題外話: x86台灣有些廠商蠻強的, 已經有人宣稱可以做到跟一般embedded processor
一樣省電 XD 所以是可以考慮拿來做可攜式遊戲機用^^a
: 像是 XBox 360、PS3、Wii 之類的遊戲主機
: 雖然 CPU 指令集不一樣,但因為速度和記憶體大小接近
: 在這方面的架構應該會和 x86 PC 類似
: 至於 NDSL 或 PSP 這類就比較偏向 embedded system 了...
沒錯 :)
其實從系統觀點, 不論是x86單板PC或是一般遊戲機,
都是很像的, 不外 processor, bus, memory, disk, peripheral
所以基本的記憶體觀念應該是都通的
當然反面就是記憶體會碰到的問題到哪都會有
這樣對於一般game developer而言應該是夠了
(其它更細的有firmware, OS, HW和一群該死的工程師去處理的)
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 140.113.212.228
討論串 (同標題文章)
GameDesign 近期熱門文章
PTT遊戲區 即時熱門文章