我想确定当前指令是否在循环内。
我很困惑 asm 是如何做到这一点的,
这样你就可以清楚地确定一条指令是否在循环之前或是否在循环中,但也可能是
statement in question
for () {
} // this jump gives you a label with a real offset but you don't know the statement in question's offset.
我错过了什么?
好的,找到方法了。
收集您通过
visitLabel
收到的一组标签,然后当感兴趣的指令发生时,保存已访问过的标签的副本,同时仍在原始组中收集标签。
当您访问 jmp 指令时,如果标签位于在执行感兴趣的指令时收集的访问标签集中,您就知道这是一个循环。