000002d0 <main>:
2d0: b580 push {r7, lr} ; Guardo lr y r7 en el stack
2d2: b082 sub sp, #8 ; Resto Stack Pointer para hacer lugar a 64 bits (32bits*2 = 4bytes * 2)
2d4: af00 add r7, sp, #0 ; R7 = Stack Pointer , R7 es mi Frame Pointer
2d6: 4b1c ldr r3, [pc, #112] ; (0x348) R3 = &SYSCTL_RCGCGPIO
2d8: f44f 5280 mov.w r2, #4096 ; R2 = 0x1000 (SYSCTL_RCGCGPIO_R12) , MOV a 32bits
2dc: 601a str r2, [r3, #0] ; (R3)SYSCTL_RCGCGPIO = SYSCTL_RCGCGPIO_R12
2de: 4b1a ldr r3, [pc, #104] ; (348) Carga nuevamente la direccion en R3
2e0: 681b ldr r3, [r3, #0] ; R3 = SYSCTL_RCGCGPIO
2e2: 603b str r3, [r7, #0] ; (R7+0) ui32Loop = (R3)SYSCTL_RCGCGPIO
2e4: 4b19 ldr r3, [pc, #100] ; (34c), R3 = &GPIO_PORTN_DIR
2e6: 2201 movs r2, #1 ; R2=1, Actualizar las banderas
2e8: 601a str r2, [r3, #0] ; (R2)GPIO_PORTN_DIR= (R2)1
2ea: 4b19 ldr r3, [pc, #100] ; (350) R3 = &GPIO_PORTN_DEN
2ec: 2201 movs r2, #1 ; R2=1
2ee: 601a str r2, [r3, #0] ; (R3)GPIO_PORTN_DEN = 1
; ------------- WHILE --------------
2f0: 4b18 ldr r3, [pc, #96] ; (354) R3 = &GPIO_PORTN_DATA
2f2: 4a18 ldr r2, [pc, #96] ; (354) R2 = &GPIO_PORTN_DATA
2f4: 6812 ldr r2, [r2, #0] ; R2 = GPIO_PORTN_DATA(R3)
2f6: f042 0201 orr.w r2, r2, #1 ; R2 = R2 or 0x1
2fa: 601a str r2, [r3, #0] ; (R3)GPIO_PORTN_DATA = R2
2fc: 2300 movs r3, #0 ; ---------- FOR --------------
2fe: 603b str r3, [r7, #0] ; ui32Loop = 0
300: e002 b.n 308 <main+0x38> ; Branch near 0x308
302: 683b ldr r3, [r7, #0] ; R3 = ui32Loops
304: 3301 adds r3, #1 ; uiLoops += 1
306: 603b str r3, [r7, #0] ; Guardo
308: 683a ldr r2, [r7, #0] ; R2 = ui32Loop
30a: 4b13 ldr r3, [pc, #76] ; (358) R3 = NumLoops
30c: 429a cmp r2, r3 ; R2 == R3 ?
30e: d9f8 bls.n 302 <main+0x32> ; Branch lower or same R2<R3 -> 0x302
; ------------- Fin FOR ------------
310: 4b10 ldr r3, [pc, #64] ; (354)
312: 4a10 ldr r2, [pc, #64] ; (354)
314: 6812 ldr r2, [r2, #0] ; R2 = GPIO_PORTN_DATA
316: f022 0201 bic.w r2, r2, #1 ; Bit Clear (AND NOT), R2 = R2 (and not) 1
31a: 601a str r2, [r3, #0] ; GPIO_PORTN_DATA = R2
31c: 2300 movs r3, #0 ; ui32Loop = 0
31e: 603b str r3, [r7, #0] ; ----------- FOR ---------------
320: e002 b.n 328 <main+0x58> ; igual que el anterior
322: 683b ldr r3, [r7, #0]
324: 3301 adds r3, #1
326: 603b str r3, [r7, #0]
328: 683a ldr r2, [r7, #0]
32a: 4b0b ldr r3, [pc, #44] ; (358)
32c: 429a cmp r2, r3
32e: d9f8 bls.n 322 <main+0x52> ; ------- Fin de FOR -------------
330: 480a ldr r0, [pc, #40] ; (35c) R0 = Dato1
332: 490b ldr r1, [pc, #44] ; (360) R1 = Dato2
334: f000 f816 bl 364 <suma> ; Salto y 0x338 -> LR
338: 6078 str r0, [r7, #4] ; c = R0
33a: 687b ldr r3, [r7, #4] ; R3 = c
33c: 2b00 cmp r3, #0 ; c==0?
33e: d102 bne.n 346 <main+0x76> ; NO -> 0x346
340: 2300 movs r3, #0 ; R3=0
342: 607b str r3, [r7, #4] ; c=0
344: e7d4 b.n 2f0 <main+0x20> ; Salto a 0x2F0
346: e7d3 b.n 2f0 <main+0x20>
348: 400fe608 .word 0x400fe608 ; SYSCTL_RCGCGPIO , Registros
34c: 40064400 .word 0x40064400 ; GPIO_PORTN_DIR
350: 4006451c .word 0x4006451c ; GPIO_PORTN_DEN
354: 400643fc .word 0x400643fc ; GPIO_PORTN_DATA
358: 00030d3f .word 0x00030d3f ; NumLoops 199.999, no 200.000 , variable
35c: 12345678 .word 0x12345678 ; Dato 1 pasado a Suma , argumentos
360: 87654321 .word 0x87654321 ; Dato 2 pasado a Suma
00000364 <suma>:
364: b480 push {r7} ; Guardo Frame Pointer
366: b085 sub sp, #20 ; Hago lugar en el stack para 20! bytes WTF!
368: af00 add r7, sp, #0 ; R7 = SP , Frame Pointer = Stack Pointer
36a: 6078 str r0, [r7, #4] ; Variables locales, guardo a
36c: 6039 str r1, [r7, #0] ; guardo b , ambo argumentos
36e: 687a ldr r2, [r7, #4] ; R2 = a
370: 683b ldr r3, [r7, #0] ; R3 = b
372: 4413 add r3, r2 ; R3 = a + b
374: 60fb str r3, [r7, #12] ; c = R3, c = a + b , como que se salte algo
376: 68fb ldr r3, [r7, #12] ; R3 = c
378: 4618 mov r0, r3 ; R0 = R3
37a: 3714 adds r7, #20 ; R7 = R7 + 20 , Vuelvo el Stack pointer a su lugar
37c: 46bd mov sp, r7 ; SP = R7
37e: f85d 7b04 ldr.w r7, [sp], #4 ;Equivalente a POP R7
382: 4770 bx lr ; PC = LR(R14) and 0xFFFF.FFFE