考虑以下由 clang 生成的 x64 代码:
mov rax, qword ptr [rsi] ; 1
mov rdx, qword ptr [rip + hash_mult] ; 1
imul rdx, qword ptr [rax - 8] ; 2
movzx ecx, byte ptr [rip + hash_shift] ; 1
shr rdx, cl ; 3
mov rax, qword ptr [rip + vptrs] ; 2 - or 3 ???
mov rax, qword ptr [rax + 8*rdx] ; 4
mov rcx, qword ptr [rip + slots_strides] ; 1
mov rax, qword ptr [rax + 8*rcx] ; 2
jmp rax ; 5
我有两个问题。
我可以假设标有相同序数的行可以并且将会并行执行吗?
byte ptr
指令中使用的是什么movzx
?它是否表示对齐不良?