The compiler is able to optimize both forms of get_cert_length to same code.
get_cert_length
Check this playground
playground::get_cert_length_mul: pushq %rax cmpq $13, %rsi jb .LBB8_4 je .LBB8_5 cmpq $15, %rsi jb .LBB8_6 movzbl 12(%rdi), %eax movzbl 13(%rdi), %esi movzbl 14(%rdi), %edx movl %eax, %edi popq %rax jmp playground::get2_cert_length_mul playground::get_cert_length_shift: pushq %rax cmpq $13, %rsi jb .LBB9_4 je .LBB9_5 cmpq $15, %rsi jb .LBB9_6 movzbl 12(%rdi), %eax movzbl 13(%rdi), %esi movzbl 14(%rdi), %edx movl %eax, %edi popq %rax jmp playground::get2_cert_length_mul playground::get2_cert_length_mul: shll $16, %edi shll $8, %esi leal (%rsi,%rdi), %eax addl %edx, %eax retq
Yip that makes sense. The shift vs multiply versions were more about which one looks less magical 😄
Are you sure you want to hide this comment? It will become hidden in your post, but will still be visible via the comment's permalink.
Hide child comments as well
Confirm
For further actions, you may consider blocking this person and/or reporting abuse
We're a place where coders share, stay up-to-date and grow their careers.
The compiler is able to optimize both forms of
get_cert_length
to same code.Check this playground
Yip that makes sense. The shift vs multiply versions were more about which one looks less magical 😄