如果 ECX 包含指向结构或数组的指针,则MOV DWORD ptr ds:[ECX], ECX
等效于MOV DWORD ptr ds:ECX, ECX
我附上了这张图片:
当我第一次看到这一行时,它让我思考,在高级语言环境中是否确实如此:
1)指向一个什么都不做的函数的指针,但调用自身,从而实现递归。
2)x数据类型的数组/结构,其第一个索引是指向数组/结构本身的指针或结构/数组的第一个条目。 因此我的标题是。
除此之外我觉得很随意:(一个地址存储地址本身发生的所述地址的值?)。有什么想法?
答案 0 :(得分:1)
在MASM下MOV DWORD ptr ds:[ECX], ECX
不等同于MOV DWORD ptr ds:ECX, ECX
,因为前者在语法上是有效的,而后者则不是。
至于你的其他问题:
1)如果函数指针存储在ECX中,则该指令将修改该函数,这通常在大多数操作系统下是不允许的,因此导致崩溃。即使是写入也被允许它会在函数开始时更改指令或指令,执行时不会执行任何有用的操作并且可能会崩溃。它永远不会导致递归。
2)可能是这样的。
对我来说,它看起来并不随意。