作者jasonlurey (我要冰生脾酒!!!!)
看板GameDesign
标题Re: [程式] 记忆体的问题
时间Mon Aug 20 23:21:14 2007
※ 引述《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