我跑过这些指示:
...
...
get:
lodsb
xor eax,ebx
stosb
loop get
push esp
pop esi
int3
我看到这个加载一个字节做一个xor并将该字节存储在一个循环中它会这样做直到ECX = 0.我的问题是程序如何知道继续push esp
指令?这只是循环块语法隐含的吗?
答案 0 :(得分:4)
loop
指令的名称可能有点误导。你可能会想要相信它只是跳到给定的标签,但想一想:如果它只是一个跳跃,那么loop
和所有其他{{1}之间的区别是什么?说明?
事情的真相是jmp
不仅仅是一个跳跃。它做了以下两件事:
因此,正如您所看到的,它非常适合循环,这就是它被称为loop
的原因。