我想知道在使用"resb";在NASM。我很确定它是RAM,但我想确定(也许是CPU缓存?(。在我的研究中,我只能发现它保留在.bss部分,但这并不能回答我的问题。感谢您的帮助。谢谢
保留的是当前所在部分的空间。这通常是.bss
部分(如果您在发布resb
之前发布了section .bss
(,但也可以是您喜欢的任何其他部分。它应该是未初始化的数据部分,否则可能会收到警告。
有时与resb
一起使用的一个特殊部分是绝对部分这是一个伪部分,用于定义具有绝对值的符号,例如用于定义使用struc ... endstruc
机制的结构。
所有其他部分都是地址空间的区域。它们的最终位置(以及在程序运行时是否在程序的地址空间中(取决于链接器。通常,.bss
部分被放置在程序地址空间的某个地方,该区域可能由实际RAM支持(或映射为由实际RAM备份(。具体情况取决于你将为其组装并运行该程序的系统。
请注意,CPU缓存在很大程度上对程序是透明的。您不能"在缓存中分配数据",并且缓存没有与其相关的地址空间。
最后,在托管环境中,通常无法判断数据是否最终进入RAM。这是因为进程受制于内存映射,其中进程的虚拟地址空间以某种方式映射到系统物理地址空间。这种映射是按需执行的,除非您真正访问地址空间的某个区域,否则很可能根本没有映射到任何内容。即使在您访问它之后,CPU也可能在将数据刷新到RAM之前将访问缓存一段时间。即使数据在某个时间点在RAM中,如果内存紧张,操作系统也可能决定将您的进程分页(或交换(到磁盘上。所有这些当然对你的程序是透明的,不需要担心你。
你不应该想太多。重要的是,这个地址空间区域的行为就像可读写的内存。