Пусть компилятор покажет вам:
#define SOME_ADDRESS (*((volatile unsigned int *) 0x2000A000 ))
void fun ( void )
{
SOME_ADDRESS = 0xFFFF0000;
}
скомпилируйте и дизассемблируйте
Disassembly of section .text:
00000000 <fun>:
0: 3c022000 lui $2,0x2000
4: 3442a000 ori $2,$2,0xa000
8: 3c03ffff lui $3,0xffff
c: ac430000 sw $3,0($2)
10: 03e00008 jr $31
14: 00000000 nop
Как указано в комментариях, есть пропущенная оптимизация, но это не главноеответ.1) Изучите АСМ 2) Научитесь оптимизировать АСМ ... в будущем.Используя компилятор, вы увидите некоторые из этих оптимизаций.Но не в этом случае.
#define SOME_ADDRESS (*((volatile unsigned int *) 0x20004000 ))
void fun ( void )
{
SOME_ADDRESS = 0xFFFF0000;
}
00000000 <fun>:
0: 3c022000 lui $2,0x2000
4: 3c03ffff lui $3,0xffff
8: ac434000 sw $3,16384($2)
c: 03e00008 jr $31
10: 00000000 nop
Да, он был построен для mips32, чтобы получить -march = mips1 и -march = mips32r6 для получения одинакового кода.как прокомментировано.