-
-
Save andrewc12/2996cd4fcc3b46e37004a47177bf6f2a to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| #include <cstddef> | |
| #include <cstdint> | |
| #include <functional> | |
| #include <iostream> | |
| int main(int argc, char* argv[]) { | |
| uint32_t b1 = 4842; | |
| int32_t b2 = 466668424; | |
| size_t haash; | |
| // Hash each member and combine them | |
| size_t h1 = std::hash<uint32_t>()(b1); | |
| size_t h2 = std::hash<int32_t>()(b2); | |
| // Combine the hashes of mIndex and mContentFile | |
| haash = h1 ^ (h2 << 1); // XOR with shift to create a combined hash | |
| std::cout << "0x" << std::hex << b1 << std::endl; | |
| std::cout << "0x" << std::hex << b2 << std::endl; | |
| std::cout << "0x" << std::hex << h1 << std::endl; | |
| std::cout << "0x" << std::hex << h2 << std::endl; | |
| std::cout << "0x" << std::hex << haash << std::endl; | |
| } |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| # Compilation provided by Compiler Explorer at https://godbolt.org/ | |
| .LC0: | |
| .string "0x" | |
| main: | |
| push rbp | |
| mov rbp, rsp | |
| sub rsp, 64 | |
| mov DWORD PTR [rbp-52], edi | |
| mov QWORD PTR [rbp-64], rsi | |
| mov DWORD PTR [rbp-4], 4842 | |
| mov DWORD PTR [rbp-8], 466668424 | |
| mov edx, DWORD PTR [rbp-4] | |
| lea rax, [rbp-34] | |
| mov esi, edx | |
| mov rdi, rax | |
| call std::hash<unsigned int>::operator()(unsigned int) const | |
| mov QWORD PTR [rbp-16], rax | |
| mov edx, DWORD PTR [rbp-8] | |
| lea rax, [rbp-33] | |
| mov esi, edx | |
| mov rdi, rax | |
| call std::hash<int>::operator()(int) const | |
| mov QWORD PTR [rbp-24], rax | |
| mov rax, QWORD PTR [rbp-24] | |
| add rax, rax | |
| xor rax, QWORD PTR [rbp-16] | |
| mov QWORD PTR [rbp-32], rax | |
| mov esi, OFFSET FLAT:.LC0 | |
| mov edi, OFFSET FLAT:std::cout | |
| call std::basic_ostream<char, std::char_traits<char> >& std::operator<< <std::char_traits<char> >(std::basic_ostream<char, std::char_traits<char> >&, char const*) | |
| mov esi, OFFSET FLAT:std::hex(std::ios_base&) | |
| mov rdi, rax | |
| call std::basic_ostream<char, std::char_traits<char> >::operator<<(std::ios_base& (*)(std::ios_base&)) | |
| mov rdx, rax | |
| mov eax, DWORD PTR [rbp-4] | |
| mov esi, eax | |
| mov rdi, rdx | |
| call std::basic_ostream<char, std::char_traits<char> >::operator<<(unsigned int) | |
| mov esi, OFFSET FLAT:std::basic_ostream<char, std::char_traits<char> >& std::endl<char, std::char_traits<char> >(std::basic_ostream<char, std::char_traits<char> >&) | |
| mov rdi, rax | |
| call std::basic_ostream<char, std::char_traits<char> >::operator<<(std::basic_ostream<char, std::char_traits<char> >& (*)(std::basic_ostream<char, std::char_traits<char> >&)) | |
| mov esi, OFFSET FLAT:.LC0 | |
| mov edi, OFFSET FLAT:std::cout | |
| call std::basic_ostream<char, std::char_traits<char> >& std::operator<< <std::char_traits<char> >(std::basic_ostream<char, std::char_traits<char> >&, char const*) | |
| mov esi, OFFSET FLAT:std::hex(std::ios_base&) | |
| mov rdi, rax | |
| call std::basic_ostream<char, std::char_traits<char> >::operator<<(std::ios_base& (*)(std::ios_base&)) | |
| mov rdx, rax | |
| mov eax, DWORD PTR [rbp-8] | |
| mov esi, eax | |
| mov rdi, rdx | |
| call std::basic_ostream<char, std::char_traits<char> >::operator<<(int) | |
| mov esi, OFFSET FLAT:std::basic_ostream<char, std::char_traits<char> >& std::endl<char, std::char_traits<char> >(std::basic_ostream<char, std::char_traits<char> >&) | |
| mov rdi, rax | |
| call std::basic_ostream<char, std::char_traits<char> >::operator<<(std::basic_ostream<char, std::char_traits<char> >& (*)(std::basic_ostream<char, std::char_traits<char> >&)) | |
| mov esi, OFFSET FLAT:.LC0 | |
| mov edi, OFFSET FLAT:std::cout | |
| call std::basic_ostream<char, std::char_traits<char> >& std::operator<< <std::char_traits<char> >(std::basic_ostream<char, std::char_traits<char> >&, char const*) | |
| mov esi, OFFSET FLAT:std::hex(std::ios_base&) | |
| mov rdi, rax | |
| call std::basic_ostream<char, std::char_traits<char> >::operator<<(std::ios_base& (*)(std::ios_base&)) | |
| mov rdx, rax | |
| mov rax, QWORD PTR [rbp-16] | |
| mov rsi, rax | |
| mov rdi, rdx | |
| call std::basic_ostream<char, std::char_traits<char> >::operator<<(unsigned long) | |
| mov esi, OFFSET FLAT:std::basic_ostream<char, std::char_traits<char> >& std::endl<char, std::char_traits<char> >(std::basic_ostream<char, std::char_traits<char> >&) | |
| mov rdi, rax | |
| call std::basic_ostream<char, std::char_traits<char> >::operator<<(std::basic_ostream<char, std::char_traits<char> >& (*)(std::basic_ostream<char, std::char_traits<char> >&)) | |
| mov esi, OFFSET FLAT:.LC0 | |
| mov edi, OFFSET FLAT:std::cout | |
| call std::basic_ostream<char, std::char_traits<char> >& std::operator<< <std::char_traits<char> >(std::basic_ostream<char, std::char_traits<char> >&, char const*) | |
| mov esi, OFFSET FLAT:std::hex(std::ios_base&) | |
| mov rdi, rax | |
| call std::basic_ostream<char, std::char_traits<char> >::operator<<(std::ios_base& (*)(std::ios_base&)) | |
| mov rdx, rax | |
| mov rax, QWORD PTR [rbp-24] | |
| mov rsi, rax | |
| mov rdi, rdx | |
| call std::basic_ostream<char, std::char_traits<char> >::operator<<(unsigned long) | |
| mov esi, OFFSET FLAT:std::basic_ostream<char, std::char_traits<char> >& std::endl<char, std::char_traits<char> >(std::basic_ostream<char, std::char_traits<char> >&) | |
| mov rdi, rax | |
| call std::basic_ostream<char, std::char_traits<char> >::operator<<(std::basic_ostream<char, std::char_traits<char> >& (*)(std::basic_ostream<char, std::char_traits<char> >&)) | |
| mov esi, OFFSET FLAT:.LC0 | |
| mov edi, OFFSET FLAT:std::cout | |
| call std::basic_ostream<char, std::char_traits<char> >& std::operator<< <std::char_traits<char> >(std::basic_ostream<char, std::char_traits<char> >&, char const*) | |
| mov esi, OFFSET FLAT:std::hex(std::ios_base&) | |
| mov rdi, rax | |
| call std::basic_ostream<char, std::char_traits<char> >::operator<<(std::ios_base& (*)(std::ios_base&)) | |
| mov rdx, rax | |
| mov rax, QWORD PTR [rbp-32] | |
| mov rsi, rax | |
| mov rdi, rdx | |
| call std::basic_ostream<char, std::char_traits<char> >::operator<<(unsigned long) | |
| mov esi, OFFSET FLAT:std::basic_ostream<char, std::char_traits<char> >& std::endl<char, std::char_traits<char> >(std::basic_ostream<char, std::char_traits<char> >&) | |
| mov rdi, rax | |
| call std::basic_ostream<char, std::char_traits<char> >::operator<<(std::basic_ostream<char, std::char_traits<char> >& (*)(std::basic_ostream<char, std::char_traits<char> >&)) | |
| mov eax, 0 | |
| leave | |
| ret | |
| # Execution result with exit code 0 | |
| # Standard out: | |
| 0x12ea | |
| 0x1bd0cb88 | |
| 0x12ea | |
| 0x1bd0cb88 | |
| 0x37a185fa |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment