我有这个简单的汇编命令:
mov eax, fs:[30h];
我的问题是我需要知道这个命令真正读取的具体地址是什么。我找到了很多有关汇编器寻址模式的文档,但没有找到有关 register: 表示法的文档。
有人可以向我解释一下地址计算背后的数学原理吗?
最佳答案
FS
是 Segment Descriptors 表的索引,它又包含一个基地址,该基地址被添加到该地址中。在 win32 上,FS
用于访问线程信息 block (或更准确地说,FS
索引的段描述符具有一个基地址,使得 FS:[0 ]
是 TIB 的开始),FS:[30h]
是指向进程环境 block 的指针的位置。在 win64 上,GS
用于访问 TIB。
关于assembly - 汇编器: Calculating a memory address with register base,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17210620/