我打包了'HELLO WO'
,结果是一个8字节的整数(5717073776924706120
),这些位是:
0100111101010111001000000100111101001100010011000100010101001000
现在我要检查此整数的前5个字符是否等于'HELLO'!我知道的第一种方法是比较第一个4-BYTE,然后移位(或旋转)4-BYTE,然后比较第五个字节!!!像这样的东西
mov rax, 5717073776924706120
cmp eax, 1280066888 ; first 4-BYTE
jne ....
ror rax, 32
cmp al, 'O' ; check the fifth character
jne ...
; done here
但是我认为有一种更好的方法来检查整个第一个5-BYTE,而无需将比较过程分为2个过程!!!所以我决定使用'test'指令,所以我需要第一个5-BYTE的位是
0000000000000000000000000100111101001100010011000100010101001000
然后我这样做:
mov rax, 5717073776924706120
mov rbx, 340582483272 ; 0000000000000000000000000100111101001100010011000100010101001000
test rax, rbx
; here what should i do next ???? how should i handle the result !?
mov rax, 5717073776924706120
mov rbx, 340582483272
mov rcx, rax
mov rdx, rbx
mov r8, 5
call memcmp
test al, al
jnz equals