Я работаю над загадками «xchg rax, rax» (xchg.xorpd.net). Это загадки о сборке x86_64, где вы должны понимать, что делают кусочки кода. Это загадка номер 0x15:Понимание небольшого кода asm со странной константой
mov rdx,0xffffffff80000000
add rax,rdx
xor rax,rdx
Похоже, этот код предназначен для повышения ценности внутри бараков в некотором роде, хотя я не совсем понимаю, как это сделать. Я пытался дать некоторые входы и выходы, но мне еще не удалось понять, что делает этот код. Что это за номер 0xffffffff80000000? Может ли кто-нибудь указать мне правильное направление решения? Мне действительно интересно об этом.
Без контекста (который xorpd не предоставляет), это трудно сказать. Тем не менее, если вы берете 32-битное число и устанавливаете самый старший бит, это дает вам -2,147,483,648. Представляя это значение с 64-битным номером, вы получаете FFFFFFFF80000000. И какое значение это может иметь? Не знаю. Единственное, что я вижу, это действительно странный способ превратить 64-битные числа (положительные и отрицательные) в 32-битные числа. FWIW. –