问题标签 [memory-segmentation]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
5 回答
2640 浏览

memory-management - 为什么 8086 使用一个额外的寄存器来寻址 1MB 的内存?

我听说 8086 有 16 位寄存器,它只能寻址 64K 的内存。然而,它仍然能够处理需要 20 位寄存器的 1MB 内存。它通过使用另一个寄存器来保存另一个 16 位,然后将 16 位寄存器中的值与另一个寄存器中的值相加,从而能够生成可寻址高达 1MB 内存的数字。那正确吗?

为什么这样做?似乎有 32 位寄存器,这足以解决 1MB 的内存。

0 投票
1 回答
2662 浏览

memory-management - 虚拟内存的最大可寻址空间是多少?

看到这个问题问了很多次。但是找不到合理的答案。虚拟内存的实际限制是多少?

它是 CPU 的最大可寻址大小吗?例如,如果 CPU 是 32 位,那么最大值是 4G?

还有一些文本将其与硬盘区域相关联。但我找不到这是一个很好的解释。有人说它是 CPU 生成的地址。

我们看到的所有地址都是虚拟地址?例如,我们在使用 GDB 调试程序时看到的内存位置。

CPU产生虚拟地址背后的历史原因?一些文本可互换地使用虚拟地址和逻辑地址。它有什么不同?

0 投票
3 回答
1613 浏览

operating-system - 需要虚拟内存?

最近有人问我一个问题,在计算机系统中,如果主内存 (RAM) 与辅助内存 (HDD) 相当,那么在这样的计算机系统中是否需要实现虚拟内存?由于分页和分段需要上下文切换,这纯粹是处理开销,虚拟内存的好处会超过它所需的处理开销吗?有人可以帮我解决这个问题吗?感谢你

0 投票
3 回答
1486 浏览

assembly - AMD 64 位模式下的段限制检查

我正在为 64 位处理器编写自己的操作系统,但遇到了一般保护问题。我的操作系统不会依赖页面错误来实现用户空间保护机制,所以我发现有一种方法可以通过段限制检查来做到这一点:

来自 VMWare 的演示文稿

http://download3.vmware.com/vmworld/2005/pac346.pdf

在第 20 页上说:

  • 最初的 AMD64 架构不包括 64 位模式下的分段

    • EMT64T 也缺少分段

    我们如何保护 VMM?

    • 64 位来宾支持需要额外的硬件协助
    • 在较新的 AMD 处理器上以 64 位模式提供段限制检查

现在,我有较新的 AMD 处理器型号,我的问题是如何在 64 位(长)模式下对 AMD 处理器进行限制段限制检查?我已经下载了开发人员手册的 2011 年 9 月版本(最新),但我在任何地方都找不到如何执行此操作,请帮助。

0 投票
2 回答
19838 浏览

assembly - ds:si 和 es:di 在汇编中是什么意思?

movsb(移动字符串,字节)指令获取地址 ds:si 处的字节,将其存储在地址 es:di,然后将 si 和 di 寄存器递增或递减 1。

我知道 esi,si 和 edi,di 寄存器,

但不是ds:sies:di

他们的意思是什么?

0 投票
3 回答
443 浏览

visual-c++ - __addgs* 是如何使用的,GS 是什么?

在微软的网站上可以找到一些细节

内在功能。据说offset

从 GS 开头的偏移量。我假设GS指的是处理器寄存器。

GS与堆栈有什么关系(如果有的话)?或者,我如何计算相对于GS的偏移量?

(而且,是否有任何与此和特定调用约定相关的“陷阱”,例如__fastcall?)

0 投票
1 回答
8622 浏览

assembly - ESP寄存器和SS寄存器有什么区别?

我只是汇编语言的初学者。据我所知,ESP 和 SS 都指的是堆栈寄存器,但不太了解它们之间的区别。

0 投票
1 回答
550 浏览

x86-16 - BIOS int 13H,AH=02(读取软盘)和堆栈段

如果我不初始化堆栈段,会发生什么?

在某些情况下会导致阅读错误吗?

0 投票
3 回答
2151 浏览

x86 - 段:偏移量寻址方案如何工作?

我读到在 Intel 8086 CPU 时代,最大的寄存器是 16 位,每个人都在寻找一种访问超过 65536 字节的线性内存的方法,但他们没有扩展 CPU 寄存器,而是发明了段:偏移寻址方案和我理解的方式,您可以将两个 16 位寄存器“组合”在一起,形成一个 32 位内存地址。但在同一个地方我也读到 CPU 只能访问 1MB 的内存。这是如何运作的?2^32 等于 4,294,967,296 所以我不明白,请赐教:)

0 投票
3 回答
3145 浏览

assembly - x86 实模式段重叠如何帮助节省内存?

我正在教我 12 岁的 8086 汇编语言,昨天我们在讨论内存、寻址和分段。我向他展示了如何将段可视化为从 16 字节边界开始的一系列重叠的 64Kb 块,偏移量是段内的 8080 样式指针。然后他问了一个我无法回答的问题:为什么(为了什么,出于什么目的)它们重叠

试图研究这个问题时,我发现了许多 20 位数学的副本,并且一些模糊地提到了这个方案可能允许的一些内存节省。有人可以详细说明节省内存的部分吗?或任何其他方式来实际利用重叠?