diff --git a/examples/bare1.rs b/examples/bare1.rs index 0e091b8323ed3452d8035a27e96c4db9ecb1295c..bf10cf090fd2e38d12637bdb03189ba257abf34f 100644 --- a/examples/bare1.rs +++ b/examples/bare1.rs @@ -24,8 +24,8 @@ fn main() -> ! { let mut _x = 0; loop { _x += 1; - cortex_m::asm::nop(); - cortex_m::asm::bkpt(); + //cortex_m::asm::nop(); + //cortex_m::asm::bkpt(); _x -= 1; } } @@ -68,32 +68,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,32 +109,6 @@ fn main() -> ! { // What is the output of: // (gdb) disassemble // -//Dump of assembler code for function Reset: -// => 0x0800061e <+0>: bl 0x800068e <DefaultPreInit> - // 0x08000622 <+4>: b.n 0x8000624 <Reset+6> - // 0x08000624 <+6>: movw r0, #0 - // 0x08000628 <+10>: movt r0, #8192 ; 0x2000 - // 0x0800062c <+14>: movw r1, #0 - // 0x08000630 <+18>: movt r1, #8192 ; 0x2000 - // 0x08000634 <+22>: bl 0x8000690 <r0::zero_bss> - // 0x08000638 <+26>: b.n 0x800063a <Reset+28> - // 0x0800063a <+28>: movw r0, #0 - // 0x0800063e <+32>: movt r0, #8192 ; 0x2000 - // 0x08000642 <+36>: movw r1, #0 - // 0x08000646 <+40>: movt r1, #8192 ; 0x2000 - // 0x0800064a <+44>: movw r2, #2580 ; 0xa14 - // 0x0800064e <+48>: movt r2, #2048 ; 0x800 - // 0x08000652 <+52>: bl 0x80006d8 <r0::init_data> - // 0x08000656 <+56>: b.n 0x8000658 <Reset+58> - // 0x08000658 <+58>: movw r0, #60808 ; 0xed88 - // 0x0800065c <+62>: movt r0, #57344 ; 0xe000 - // 0x08000660 <+66>: ldr r1, [r0, #0] - // 0x08000662 <+68>: orr.w r1, r1, #15728640 ; 0xf00000 - // 0x08000666 <+72>: bl 0x8000752 <core::ptr::write_volatile> - // 0x0800066a <+76>: b.n 0x800066c <Reset+78> - // 0x0800066c <+78>: bl 0x8000672 <ResetTrampoline> - // 0x08000670 <+82>: udf #254 ; 0xfe -// End of assembler dump. // // Commit your answers (bare1_3) // @@ -139,32 +118,6 @@ fn main() -> ! { // What is the output of: // (gdb) disassemble // -// Dump of assembler code for function Reset: -// => 0x08000622 <+0>: bl 0x8000692 <DefaultPreInit> - // 0x08000626 <+4>: b.n 0x8000628 <Reset+6> - // 0x08000628 <+6>: movw r0, #0 - // 0x0800062c <+10>: movt r0, #8192 ; 0x2000 - // 0x08000630 <+14>: movw r1, #0 - // 0x08000634 <+18>: movt r1, #8192 ; 0x2000 - // 0x08000638 <+22>: bl 0x8000694 <r0::zero_bss> - // 0x0800063c <+26>: b.n 0x800063e <Reset+28> - // 0x0800063e <+28>: movw r0, #0 - // 0x08000642 <+32>: movt r0, #8192 ; 0x2000 - // 0x08000646 <+36>: movw r1, #0 - // 0x0800064a <+40>: movt r1, #8192 ; 0x2000 - // 0x0800064e <+44>: movw r2, #2580 ; 0xa14 - // 0x08000652 <+48>: movt r2, #2048 ; 0x800 - // 0x08000656 <+52>: bl 0x80006dc <r0::init_data> - // 0x0800065a <+56>: b.n 0x800065c <Reset+58> - // 0x0800065c <+58>: movw r0, #60808 ; 0xed88 - // 0x08000660 <+62>: movt r0, #57344 ; 0xe000 - // 0x08000664 <+66>: ldr r1, [r0, #0] - // 0x08000666 <+68>: orr.w r1, r1, #15728640 ; 0xf00000 - // 0x0800066a <+72>: bl 0x8000756 <core::ptr::write_volatile> - // 0x0800066e <+76>: b.n 0x8000670 <Reset+78> - // 0x08000670 <+78>: bl 0x8000676 <ResetTrampoline> - // 0x08000674 <+82>: udf #254 ; 0xfe -// End of assembler dump. // // Commit your answers (bare1_4) // @@ -177,8 +130,6 @@ fn main() -> ! { // Compare the generated assembly for the loop // between the dev (unoptimized) and release (optimized) build. // -// The optimized assembly code is much longer (so long that I could not even copy it) -// It is longer since it executes instructions that the non-optimized does not make // // commit your answers (bare1_5) //