关于汇编:x86 汇编器:shl 等说明

x86 Assembler: shl and other instructions

我试图理解循环中的一些汇编代码。循环从 1 运行到 255,并在循环内执行以下操作:

1
2
3
4
mov    eax,DWORD PTR [ebp-0x4]
shl    eax,0x2
add    eax,DWORD PTR [ebp+0x8]
mov    DWORD PTR [eax],0x0

这里的 DWORD PTR [ebp-0x4] 指的是从 1 到 255 的数字。

有人能弄清楚这里发生了什么吗?谢谢。


显然只是将数组归零:

1
2
3
4
mov    eax,DWORD PTR [ebp-0x4] ; load index
shl    eax,0x2                 ; multiply index by 4 to get byte offset
add    eax,DWORD PTR [ebp+0x8] ; add byte offset to array base address
mov    DWORD PTR [eax],0x0     ; zero value at array[index]