反汇编了x86-64可执行文件后,反汇编程序显示了部分可执行文件的以下说明。
xor r14d, r14d ; zero r14d
xor ecx, ecx ; zero ecx
mov qword [ss:rbp+var_40], rcx ; move rcx (now zeroed) into var_40
; … additional code that doesn't make any changes to var_40 or r14d …
mov esi, r14d ; move r14d into esi
mov rcx, qword [ss:rbp+var_40] ; move var_40 back into rcx
cmp rsi, rcx ; compare rsi and rcx, both zero?
尽管保证它们都是零,但似乎正在比较rsi
和rcx
。然后代码在比较之后分支。我在思考这个问题时是否正确?如果是这样,为什么会发生这种情况?