我在学校有一个项目任务,这是臭名昭着的x86炸弹。在代码中的某一点,编译器执行此指令:
mov 0x1c(%esp),%eax
接着是
和$ 0xf,%eax
然后将%eax放回到使用此指令取出的位置:
mov%eax,0x1c(%esp)
你认为这是由编辑器自动完成的事情,还是由教师完成的事情让我迷惑并让我更难弄清楚发生了什么?因为根据我的理解,这部分代码绝对没有任何意义。从堆栈中取4字节字,在最后4位使用和指令,二进制数" 1111"并将其重新放回堆栈上的相同位置。这对我来说似乎毫无意义。我错过了什么吗?
答案 0 :(得分:1)
支持@lurker和@RossRidge的指令;
和$ 0xf,%eax
用于屏蔽除%eax内容的最后4位之外的所有内容。