【发布时间】:2020-05-26 14:50:31
【问题描述】:
我正在尝试了解有关 x86 程序集 (masm) 以及它如何处理内存的更多信息。 具体来说,我遇到了以下声明:
mov eax,ds:0x83f413c
我知道这会将内存地址 0x83f413c 上的内容复制到 eax 中,这引发了问题。我可以读取和写入每个内存位置吗?我怎么知道 0x83f413c 是否是一个有效的内存位置?
【问题讨论】:
-
通常我们通过使用汇编指令和声明存储来选择要读/写的内存位置,例如全局变量,我们可以通过它们的标签来引用,或者通过调用操作系统调用或库函数来动态返回指向某些可用内存的指针,或者通过分配堆栈空间,这是相对于堆栈指针完成的。对于大多数目的,我们不必事先知道任何绝对地址。如果您看到这一点,则需要在其上下文中理解它——我们不能期望它适用于任何设置。
-
你可以尝试读写任何内存位置。如果不允许这样做,则会引发异常。
标签: assembly memory memory-management x86 masm