【发布时间】:2016-03-27 14:41:15
【问题描述】:
当我这样做时:
endnf:
add al, BYTE[rdi]
sub al, BYTE[rsi]
jmp end
当 BYTE[rdi] = 116 且 BYTE[rsi] = 122 时,结果为 250 而不是 -6,因为 al = sizeof(char)
所以我尝试了:
endnf:
add rax, BYTE[rdi]
sub rax, BYTE[rdi]
jmp end
但我不工作:
nasm -f elf64 strcmp.s 16:31:07
strcmp.s:24: error: invalid combination of opcode and operands
rdi[0] 和 rsi[0] 相减应该怎么做?
【问题讨论】:
-
250在 8 位二进制补码中是-6。如果您想要更大的结果,请签名扩展它,例如movsx rax, al。