Если вы хотите просмотреть asm, вы можете использовать
objdump -d -M intel binary_name
Затем вы будете искать раздел .text
и затем функцию main
.
Вот что я получил на своем компьютере, используя int arr[2]
и простой printf
для использования переменных.
Оптимизированный вывод, скомпилированный с -O3
mov ecx,0x2a
mov edx,0x2a
Не оптимизировано
Для этого кода:
arr[0] = 42;
arr[1] = 42;
Вывод:
mov DWORD PTR [rbp-0x10],0x2a
mov DWORD PTR [rbp-0xc],0x2a
А для этого кода:
arr[0] = arr[1] = 42;
Вывод :
mov DWORD PTR [rbp-0xc],0x2a
mov eax,DWORD PTR [rbp-0xc]
mov DWORD PTR [rbp-0x10],eax
Во втором случае есть дополнительная операция.
Так что с оптимизированной компиляцией нет никакой разницы, но для читабельности кода я бы не писал так.