【发布时间】:2015-05-10 18:48:31
【问题描述】:
我正在 Windows 机器上编写一个小型 x86 汇编程序。有一次我想检查存储在 EDX 寄存器中的值是否是指向同一程序代码段的有效地址。谁能告诉我如何以及是否可以做到这一点?
【问题讨论】:
我正在 Windows 机器上编写一个小型 x86 汇编程序。有一次我想检查存储在 EDX 寄存器中的值是否是指向同一程序代码段的有效地址。谁能告诉我如何以及是否可以做到这一点?
【问题讨论】:
在你的程序开始时,放一个这样的标签...
The_Code_Starts_Here:
在程序的最后,放一个这样的标签...
The_Code_Ends_Here:
在您想质疑该地址有效性的部分中,请执行以下操作...
Cmp Edx, The_Code_Starts_Here ; Is it in the code segment ?
Jb Bombs_Away ; No, bomb out
Cmp Edx, The_Code_Ends_Here ; Is it in the code segment ?
Jae Bombs_Away ; No, bomb out
; Else, good stuff, go on
如果我搞砸了 Jb 和 Ja 命名法,那就换掉它们吧。
【讨论】:
ja 应该是jae,因为地址 The_Code_Ends_Here 已经超出了代码部分。