问题标签 [hardware-traps]
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.
c++ - 即使指针从未被取消引用,如何在结束后三指针中发生硬件陷阱?
Herb Sutter 在 2005年11 月 1 日的 C++ 专栏中写道...
[O] 在某些 CPU 架构中,包括当前的架构,上述代码可能会导致在创建结束后三指针的位置发生硬件陷阱,无论该指针是否被取消引用。
CPU 如何陷入位模式?关于什么 ...
额外的问题:“一些当前的 CPU 架构”这个短语是否应该通常理解为仅指运输产品,或者如果描述或暗示它们的虚构作品具有最近的出版日期,它是否也包括虚构的架构?
debugging - XP 64 位上的硬件断点
有没有人有硬件断点可以在 64 位 XP 上工作,如果有的话怎么办?
我们有一个使用硬件断点的应用程序,它已经在 32 位 XP 和 32 位 Vista 操作系统上运行了一段时间。然而,将我们的代码移植到 64 位后,当应用程序在 64 位 XP 上运行时会崩溃,而在 64 位 Vista 上运行时则不会。该应用程序是在 XP 上编译和构建的。
在设置断点 (DR7=1) 后,我们将其隔离为线程恢复。如果我们提出一个文件对话框并且表单上的 GUI 控件相当不稳定,就会发生崩溃。奇怪的是,如果在设置断点并观察不稳定的 GUI 之后,我们禁用断点 (DR7=0),GUI 会再次开始正常运行,并且打开文件对话框不会导致崩溃。
我们已经用其他示例断点设置代码替换了我们的断点设置代码,并且每个示例都有相同的问题。
embedded - 什么是陷阱?
处理器数据表中列出了许多不同类型的陷阱,例如 BusFault、MemManage Fault、Usage Fault 和 Address Error。
他们的目的是什么?它们如何用于故障处理?
memory - 操作系统陷阱:发生寻址错误的原因是什么?
在为特定进程分配逻辑内存空间后,通过使用基址寄存器和限制寄存器来强制保护该空间。为了防止访问为进程分配的内存空间之外的内存,CPU 硬件将每个请求的内存地址与这些寄存器进行比较。如果以下两个条件之一成立,则会发生操作系统陷阱:
- 目标地址小于基址寄存器。
- 目标地址大于或等于限制寄存器。
这个逻辑可以在下面的图 7.2中直观地观察到。
以上解释了它们是如何发生的,例如
在用户模式下执行的程序访问操作系统内存或其他用户内存的任何尝试都会导致操作系统陷入陷阱。
但是,当请求的地址实际上超出程序分配的内存空间时,有哪些示例?什么会导致这个?
[图片和引用来源:操作系统要点,第 2 版。——亚伯拉罕·西尔伯沙茨]