Skip to content
Snippets Groups Projects
Commit f1ef301c authored by Ridge's avatar Ridge
Browse files

bare1_2

parent ea1a5ece
No related branches found
No related tags found
No related merge requests found
Pipeline #130 canceled
......@@ -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
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment