@@ -896,15 +896,15 @@ Now let's compile this code with, and without `volatile` specifier for `s_ticks`
896896and compare generated machine code:
897897
898898```
899- // NO VOLATILE: uint32_t s_ticks; | // VOLATILE: volatile uint32_t s_ticks;
900- |
901- ldr r3, [pc, #8] // cache s_ticks | ldr r2, [pc, #12]
902- ldr r3, [r3, #0] // in r3 | ldr r3, [r2, #0] // r3 = s_ticks
903- adds r0, r3, r0 // r0 = r3 + ms | adds r3, r3, r0 // r3 = r3 + ms
904- | ldr r1, [r2, #0] // RELOAD: r1 = s_ticks
905- cmp r3, r0 // ALWAYS FALSE! | cmp r1, r3 // compare
906- bcc.n 200000d2 <delay+0x6> | bcc.n 200000d2 <delay+0x6>
907- bx lr | bx lr
899+ // NO VOLATILE: uint32_t s_ticks; | // VOLATILE: volatile uint32_t s_ticks;
900+ |
901+ ldr r3, [pc, #8] // cache s_ticks | ldr r2, [pc, #12]
902+ ldr r3, [r3, #0] // in r3 | ldr r3, [r2, #0] // r3 = s_ticks
903+ adds r0, r3, r0 // r0 = r3 + ms | adds r3, r3, r0 // r3 = r3 + ms
904+ | ldr r1, [r2, #0] // RELOAD: r1 = s_ticks
905+ cmp r3, r0 // ALWAYS FALSE | cmp r1, r3 // compare
906+ bcc.n 200000d2 <delay+0x6> | bcc.n 200000d2 <delay+0x6>
907+ bx lr | bx lr
908908```
909909
910910If there is no `volalile`, the `delay()` function will loop forever and never
0 commit comments