diff --git a/examples/bare1.rs b/examples/bare1.rs index 80dd8e8edd0b246e0733d93a5fc8b62a0a3c94bc..9390de5bd8866de515b4da12b8ba2e2c3d1c9032 100644 --- a/examples/bare1.rs +++ b/examples/bare1.rs @@ -24,7 +24,7 @@ fn main() -> ! { let mut _x = 0; loop { _x += 1; - cortex_m::asm::nop(); + // cortex_m::asm::nop(); // cortex_m::asm::bkpt(); _x -= 1; } @@ -69,31 +69,37 @@ fn main() -> ! { // What is the output of: // (gdb) disassemble // -// Dump of assembler code for function Reset: -// => 0x08000616 <+0>: bl 0x8000686 <DefaultPreInit> -// 0x0800061a <+4>: b.n 0x800061c <Reset+6> -// 0x0800061c <+6>: movw r0, #0 -// 0x08000620 <+10>: movt r0, #8192 ; 0x2000 -// 0x08000624 <+14>: movw r1, #0 -// 0x08000628 <+18>: movt r1, #8192 ; 0x2000 -// 0x0800062c <+22>: bl 0x8000688 <r0::zero_bss> -// 0x08000630 <+26>: b.n 0x8000632 <Reset+28> -// 0x08000632 <+28>: movw r0, #0 -// 0x08000636 <+32>: movt r0, #8192 ; 0x2000 -// 0x0800063a <+36>: movw r1, #0 -// 0x0800063e <+40>: movt r1, #8192 ; 0x2000 -// 0x08000642 <+44>: movw r2, #2580 ; 0xa14 -// 0x08000646 <+48>: movt r2, #2048 ; 0x800 -// 0x0800064a <+52>: bl 0x80006d0 <r0::init_data> -// 0x0800064e <+56>: b.n 0x8000650 <Reset+58> -// 0x08000650 <+58>: movw r0, #60808 ; 0xed88 -// 0x08000654 <+62>: movt r0, #57344 ; 0xe000 -// 0x08000658 <+66>: ldr r1, [r0, #0] -// 0x0800065a <+68>: orr.w r1, r1, #15728640 ; 0xf00000 -// 0x0800065e <+72>: bl 0x800074a <core::ptr::write_volatile> -// 0x08000662 <+76>: b.n 0x8000664 <Reset+78> -// 0x08000664 <+78>: bl 0x800066a <ResetTrampoline> -// 0x08000668 <+82>: udf #254 ; 0xfe +// Dump of assembler code for function main: +// 0x08000400 <+0>: sub sp, #16 +// 0x08000402 <+2>: movs r0, #0 +// 0x08000404 <+4>: str r0, [sp, #12] +// 0x08000406 <+6>: b.n 0x8000408 <main+8> +// 0x08000408 <+8>: ldr r0, [sp, #12] +// 0x0800040a <+10>: adds r1, r0, #1 +// 0x0800040c <+12>: mov r2, r1 +// 0x0800040e <+14>: cmp r1, r0 +// 0x08000410 <+16>: str r2, [sp, #8] +// 0x08000412 <+18>: bvs.n 0x800042c <main+44> +// 0x08000414 <+20>: b.n 0x8000416 <main+22> +// 0x08000416 <+22>: ldr r0, [sp, #8] +// 0x08000418 <+24>: str r0, [sp, #12] +// 0x0800041a <+26>: ldr r1, [sp, #12] +// 0x0800041c <+28>: subs r2, r1, #1 +// 0x0800041e <+30>: cmp r1, #1 +// 0x08000420 <+32>: str r2, [sp, #4] +// 0x08000422 <+34>: bvs.n 0x800043a <main+58> +// 0x08000424 <+36>: b.n 0x8000426 <main+38> +// 0x08000426 <+38>: ldr r0, [sp, #4] +// 0x08000428 <+40>: str r0, [sp, #12] +// => 0x0800042a <+42>: b.n 0x8000408 <main+8> +// 0x0800042c <+44>: movw r0, #2268 ; 0x8dc +// 0x08000430 <+48>: movt r0, #2048 ; 0x800 +// 0x08000434 <+52>: bl 0x800045c <panic> +// 0x08000438 <+56>: udf #254 ; 0xfe +// 0x0800043a <+58>: movw r0, #2340 ; 0x924 +// 0x0800043e <+62>: movt r0, #2048 ; 0x800 +// 0x08000442 <+66>: bl 0x800045c <panic> +// 0x08000446 <+70>: udf #254 ; 0xfe // End of assembler dump. // // Commit your answers (bare1_2) @@ -104,7 +110,7 @@ fn main() -> ! { // What is the output of: // (gdb) disassemble // -// ** your answer here ** + // // Commit your answers (bare1_3) // @@ -114,7 +120,7 @@ fn main() -> ! { // What is the output of: // (gdb) disassemble // -// ** your answer here ** + // // Commit your answers (bare1_4) // @@ -127,8 +133,11 @@ fn main() -> ! { // Compare the generated assembly for the loop // between the dev (unoptimized) and release (optimized) build. // -// ** your answer here ** +// The optimized version executes assembly commands that the unoptimized does not. +// It also is a lot longer with the length of the commands executed, due to this. // + + // commit your answers (bare1_5) // // Tips: The optimized build should have 3 instructions