У меня есть некоторый C код, который при передаче в Compiler Explorer выводит:
mov BYTE PTR [rbp-4], al
mov eax, ecx
mov BYTE PTR [rbp-8], al
mov eax, edx
mov BYTE PTR [rbp-12], al
Однако, если я использую G CC или G ++, он дает мне следующее:
mov BYTE PTR 16[rbp], al
mov eax, edx
mov BYTE PTR 24[rbp], al
mov eax, ecx
mov BYTE PTR 32[rbp], al
Понятия не имею, почему значения BYTR отличаются. У них совершенно неправильный адрес, и я не понимаю, почему они находятся перед частью [rdp].
Если вы знаете, как воспроизвести первый вывод, используя g cc или g ++, пожалуйста, помогите!