Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- # x - rax
- # temp - rdx
- # temp2 - rdi
- .text
- .global bitrev
- .type bitrev, @function
- bitrev:
- movq %rdi,%rax
- #(x & 0x5555555555555555) << 1
- movq %rax, %rdx
- andq $0x5555555555555555, %rdx
- shlq $1, %rdx
- #(x & 0xAAAAAAAAAAAAAAAA) >> 1;
- movq %rax, %rdi
- andq $0xAAAAAAAAAAAAAAAA, %rdi
- shrq $1, %rdi
- #x = temp | temp2;
- movq %rdx, %rax
- orq %rdi, %rax
- #
- movq %rax, %rdx
- andq $0x3333333333333333, %rdx
- shlq $2, %rdx
- #
- movq %rax, %rdi
- andq $0xCCCCCCCCCCCCCCCC, %rdi
- shrq $2, %rdi
- #
- movq %rdx, %rax
- orq %rdi, %rax
- #
- movq %rax, %rdx
- andq $0x0F0F0F0F0F0F0F0F, %rdx
- shlq $4, %rdx
- #
- movq %rax, %rdi
- andq $0xF0F0F0F0F0F0F0F0, %rdi
- shrq $4, %rdi
- #
- movq %rdx, %rax
- orq %rdi, %rax
- #
- movq %rax, %rdx
- andq $0x00FF00FF00FF00FF, %rdx
- shlq $8, %rdx
- #
- movq %rax, %rdi
- andq $0xFF00FF00FF00FF00, %rdi
- shrq $8, %rdi
- #
- movq %rdx, %rax
- orq %rdi, %rax
- #
- movq %rax, %rdx
- andq $0x0000FFFF0000FFFF, %rdx
- shlq $16, %rdx
- #
- movq %rax, %rdi
- andq $0xFFFF0000FFFF0000, %rdi
- shrq $16, %rdi
- #
- movq %rdx, %rax
- orq %rdi, %rax
- #
- movq %rax, %rdx
- shlq $32, %rdx
- #
- movq %rax, %rdi
- shrq $32, %rdi
- movq %rdx, %rax
- orq %rdi, %rax
- ret
- .size bitrev, .-bitrev
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement