Skip to content

Instantly share code, notes, and snippets.

@andrewc12
Created December 2, 2024 04:18
Show Gist options
  • Select an option

  • Save andrewc12/2996cd4fcc3b46e37004a47177bf6f2a to your computer and use it in GitHub Desktop.

Select an option

Save andrewc12/2996cd4fcc3b46e37004a47177bf6f2a to your computer and use it in GitHub Desktop.
#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;
}
# 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