我和asm玩得很开心,但有些东西我不明白,我正在重新编码memset函数,当我发现我必须将我的内存指针指针4增加4时为了使它工作。为什么会这样?
谢谢!
编辑:哦,如果你碰巧对寄存器的重叠有解释,我真的很感激你能分享它!我总是将少于64位的参数移动到[rax - eax - a * ...]来分割这些参数。 : - (
(我的代码:)
memset:
push rbp
mov rbp, rsp
mov rax, rsi
mov r11, rdi
loop:
cmp rdx, 0
jz end
mov byte [rdi], al
dec rdx
add rdi, 4 <------ here the 4 increment
jmp loop
end:
mov rax, r11
mov rsp, rbp
pop rbp
ret