call
pop
sub
组合用于自定位。
主要用于这个组合下面的一句代码的重定位
@@为标号, 在它前面 当然是@f , 在它后面 当然是@b ,这样理解比较顺畅。
call把返回地址压入栈中,即@@标号地址, POP弹出此地址到EBX,
offset @B 又取得@@标号地址,sub ebx,offset @B ,结果自然EBX为0,表示无须重定位。
要真正理解重定位的问题,需要知道sub ebx,offset @B 这句代码在编译后offset @B
就是固定的在设计时的地址,其他地址都是根据载入时可以变的,sub以后,ebx中就是差值, 这个组合下面通常也会有个需要重定位的OFFSET取的地址,用这个组合得到的差值ebx加上需要重定位的地址,就得到正确的地址。
喝多了,讲不太清楚,将就看吧。大概就这个意思。