в rdi нельзя просто параметр записать это же регистр-указатель, туда только адрес и можно положить, или уже данные по адресу если rdi указывает уже на нужный адрес тогда указывать нужно в квадратных скобках или я не знаю как там в gnu асме
Для прцессора то точно разницы нет, это 64 бита число или адрес, это когда попытаешся использовать эти биты как адресс то узнаешь.
В интеловском синтаксе это - mov rdi, offset lock (IdaFree так показывает)
А вот так ghidra показывает - MOV param_1=>lock,lock
А вот так radare2 с ATT синтаксисом - movq $0, %rdi, здесь ноль, потому что radare2 статически дизассемблировал, а GDB показал с учетом KASLR
В общем понял я как это может быть и что это значит. Первый параметр в INTEL64 передается через RDI, но если ты первый параметр не используешь в функции, то компайлер использует регистр под локальную переменную.