为什么x86中的nopl
指令需要一个操作数? 难道nop不就是什么都不做吗?
nopl 0x0(%rax)
为什么x86中的nopl
指令需要一个操作数? 难道nop不就是什么都不做吗?
nopl 0x0(%rax)
b << n
的指令,其中b
是0到255的值,n
是从0到24的偶数。如果想要将R0加载为值256,则可以加载加载它的指令与1<<8
一样,或者可以使用4<<6
、16<<4
或64<<2
的指令。尽管所有四个指令具有相同的效果,但加载这些不同值的指令都具有不同的二进制编码。b
的值。如果代码覆盖上述指令中的b
部分,并将其值设置为12,则加载到R0中的值将取决于使用了哪个原始的四个指令;它可能是0x0C00、0x0300、0x00C0或0x0030。nop
、nop2
、nop3
等,或者有一个助记符用于“生成最快的n字节nop序列”,其参数是所需大小。如果只需要例如7字节的NOP,则无需指定四个字节中的值。 - supercat有时候我在调试时使用nops。如果我知道某些东西出了问题,但需要数千个断点才能发现,那么我会编写测试代码来测试它。它可能看起来像这样(C风格的代码):
if (condition_occurred)
{
asm("nop");
}
90 nop
也有参数,实际上是xchg eax, eax
。 - harold