Jak zmusić kompilator by tą jedyną funkcję potraktował dosłownie... bez optymalizacji kodu.
void function() {
uint32_t *pointer = (uint32_t *) 0xFEC00000;
pointer[ 0 ] = 0x20;
pointer[ 4 ] = 0x28;
pointer[ 0 ] = 0x21
pointer[ 4 ] = 0x00;
}
Kompilator wypluwa:
mov esi, 0xFEC00000
mov dword [esi], 0x21
and dword [esi + 0x10], 0x00
a powinien:
mov esi, 0xFEC00000
mov dword [esi], 0x20
mov dword [esi + 0x10], 0x28
mov dword [esi], 0x21
mov dword [esi + 0x10], 0x00