我应该在x86程序集中初始化寄存器吗?

Bru*_*uno 0 x86 assembly

我正在尝试解决这个问题:

假设您在eax,ebx,ecx中获得了值.编写在所有寄存器中添加值的代码,并将最终结果存储在edx中.

我的代码:

mov eax,3
mov ebx,4
mov ecx,1
add edx,eax
add edx,ebx
add edx,ecx
Run Code Online (Sandbox Code Playgroud)

我是否必须初始化寄存器edx(mov edx,0)?

Mic*_*ael 7

我是否必须初始化寄存器edx(mov edx,0)?

编写代码的方式需要edx在第一个代码之前清除add,或者使用mov edx, 0xor edx, edx.但是,不是添加额外的指令,而是可以用以下代码替换第add一个mov:

mov edx,eax   ; edx = eax
add edx,ebx   ; edx += ebx
add edx,ecx   ; edx += ecx
Run Code Online (Sandbox Code Playgroud)

或者,减少一条指令:

lea edx,[eax + ebx]  ; edx = eax + ebx
add edx,ecx          ; edx += ecx
Run Code Online (Sandbox Code Playgroud)