Program Memory [Origin = 0x200, Length = 0x5600]
section address length (PC units) length (bytes) (dec)
------- ------- ----------------- --------------------
.text 0x200 0x9a 0xe7 (231)
.text 0x29a 0x12 0x1b (27)
.dinit 0x2ac 0x8 0xc (12)
Total program memory used (bytes): 0x10e (270) <1%
Target halted. Stopwatch cycle count = 115162 (500,026052 ms)
Target halted. Stopwatch cycle count = 115154 (499,991316 ms)
Target halted. Stopwatch cycle count = 115167 (500,047761 ms)
Target halted. Stopwatch cycle count = 115167 (500,047761 ms)
Target halted. Stopwatch cycle count = 115167 (500,047761 ms)
Target halted. Stopwatch cycle count = 115167 (500,047761 ms)
Target halted. Stopwatch cycle count = 115167 (500,047761 ms)
Target halted. Stopwatch cycle count = 115167 (500,047761 ms)
Target halted. Stopwatch cycle count = 115167 (500,047761 ms)
Target halted. Stopwatch cycle count = 115167 (500,047761 ms)
CRT0_STARTUP(startup.s)
CRT1_STARTUP(startup.s)section address alignment gaps total length (dec)
------- ------- -------------- -------------------
.bss 0x800 0 0x60 (96)
.data 0x860 0 0x4 (4)
section address alignment gaps total length (dec)
------- ------- -------------- -------------------
.bss 0x800 0 0x60 (96)
.data 0x860 0 0x6 (6)
Total data memory used (bytes): 0x66 (102) 4%
Program Memory [Origin = 0x200, Length = 0x5600]
section address length (PC units) length (bytes) (dec)
------- ------- ----------------- --------------------
.text 0x200 0x9e 0xed (237)
.const 0x29e 0x28 0x3c (60)
.dinit 0x2c6 0x16 0x21 (33)
.text 0x2dc 0xc 0x12 (18)
Total program memory used (bytes): 0x15c (348) 1%
Data Memory [Origin = 0x800, Length = 0x800]
section address alignment gaps total length (dec)
------- ------- -------------- -------------------
.midatos 0x800 0 0x20 (32)
main.s.scn2 0x870 0 0x2 (2)
main.s.scn1 0xfc0 0 0x40 (64)
Total data memory used (bytes): 0x62 (98) 4%
section address length (PC units) length (bytes) (dec)
------- ------- ----------------- --------------------
.const 0x29e 0x28 0x3c (60)
Para eso siempre esta C .
valor de X?
Si X=0 -> Funcion0() -> Fin()
Si X=1 -> Funcion1() -> Fin()
Si X=2 -> Funcion2() -> Fin()
Si X=3 -> Funcion3() -> Fin()
Fin:
Aca hago algo mas. X=0? GOTO xxx
X=1? GOTO yyy
X=2? GOTO zzz0x800 a 0x81F: Todo lleno de 1
0x820 a 0x83F: Todo lleno de 2
Leeria de 0x840 a 0x85F
0x800 a 0x81F: Todo lleno de 1
0x800 a 0x81F: Todo lleno de 2
Leo de 0x800 a 0x81F
W = 0xFF
W = W + 0x10 -> C=1
W = W + 0xFF -> C=1
W = W + 1 -> C=0ACCA = 0x00.FFFF.FFFF
ACCA += 0x10 -> ACCA = 0x01.0000.000F , la cual ACCAU = 0x01 , y el bit de overflow OA = 1
ACCA += 0x00.FFFF.FFFF -> ACCA = 0x02.0000.000E, ACCAU = 0x02 , OA = 1
ACCA += 0x1 -> ACCA = 0x02.0000.000F, ACCAU = 0x02 , OA = 01. W4=W5=0x2 , W8=0x818 , W10=0xC18 , A=0x1 , W13=0x1212 ( Luego del 1*1 )
2. W4=W5=0x3 , W8=0x81A , W10=0xC1A , A=0x5 (Luego del 2*2)
3. W4=W5=0x4 , W8=0x81C , W10=0xC1C , A=0xE
4. W4=W5=0x5 , W8=0x81E , W10=0xC1E , A=0x1E
5. W4=W5=0x6 , W8=0x820 , W10=0xC20 , A=0x37
6. W4=W5=0x7 , W8=0x822 , W10=0xC22 , A=0x5B
7. W4=W5=0x8 , W8=0x824 , W10=0xC24 , A=0x8C
8. W4=W5=0x9 , W8=0x814 , W10=0xC14 , A=0xCC
9. W4=W5=0x1 , W8=0x816 , W10=0xC16 , A=0x11D (Luego del 9*9 y valores finales de los registros )1. W4=0x2 , W8=0x818 , W10=0xC20 , A=0x40 ( Luego del (1-9)² = 64 )
2. W4=0x3 , W8=0x81A , W10=0xC1E , A=0x24 ( Luego del (2-8)² = 36 )
3. W4=0x4 , W8=0x81C , W10=0xC1C , A=0x10
4. W4=0x5 , W8=0x81E , W10=0xC1A , A=0x4
5. W4=0x6 , W8=0x820 , W10=0xC18 , A=0x0 ( Luego del (5-5)² )
6. W4=0x7 , W8=0x822 , W10=0xC16 , A=0x4
7. W4=0x8 , W8=0x824 , W10=0xC14 , A=0x10
8. W4=0x9 , W8=0x814 , W10=0xC24 , A=0x24
9. W4=0x1 , W8=0x816 , W10=0xC22 , A=0x40 ( (9-1)² = 64 )1. W4=0x2 , W8=0x818 , W10=0xC20 , A=0x40
2. W4=0x3 , W8=0x81A , W10=0xC1E , A=0x64
3. W4=0x4 , W8=0x81C , W10=0xC1C , A=0x74
4. W4=0x5 , W8=0x81E , W10=0xC1A , A=0x78
5. W4=0x6 , W8=0x820 , W10=0xC18 , A=0x78
6. W4=0x7 , W8=0x822 , W10=0xC16 , A=0x7C
7. W4=0x8 , W8=0x824 , W10=0xC14 , A=0x8C
8. W4=0x9 , W8=0x814 , W10=0xC24 , A=0xB0
9. W4=0x1 , W8=0x816 , W10=0xC22 , A=0xF0 Line Address Opcode Label DisAssy
336 029E FA0006 main LNK #0x6
337 02A0 238290 MOV #0x3829, W0
338 02A2 256471 MOV #0x5647, W1
339 02A4 BE9F80 MOV.D W0, [W15++]
340 02A6 277990 MOV #0x7799, W0
341 02A8 299881 MOV #0x9988, W1
342 02AA BE9F80 MOV.D W0, [W15++]
343 02AC 255660 MOV #0x5566, W0
344 02AE 244451 MOV #0x4445, W1
345 02B0 BE9F80 MOV.D W0, [W15++]
346 02B2 222336 MOV #0x2233, W6
347 02B4 211127 MOV #0x1112, W7
348 02B6 290114 MOV #0x9011, W4
349 02B8 256785 MOV #0x5678, W5
350 02BA 211112 MOV #0x1111, W2
351 02BC 212343 MOV #0x1234, W3
352 02BE B3C030 MOV.B #0x3, W0
353 02C0 070006 RCALL _ProgramaASM
354 02C2 5787EC SUB W15, #0xC, W15
355 02C4 278780 MOV #0x7878, W0
356 02C6 980720 MOV W0, [W14+4]
357 02C8 20FFE0 MOV #0xFFE, W0
358 02CA 780F00 MOV W0, [W14]
359 02CC 37FFFF BRA 0x2CC
360 02CE 000000 _ProgramaASM NOP
361 02D0 000000 NOP
362 02D2 000000 NOP
363 02D4 060000 RETURN
364 02D6 000000 NOPW0 = arg1
W1 = 0x00
W3:W2 = arg2
W5:W4 = arg3
W7:W6 = arg4W0 = arg1
W2:W1 = arg2
W4:W3 = arg3
W6:W5 = arg4W0 = arg1
W1 = arg2
W2 = arg3
W5:W4 = arg4
W7:W6 = arg5W0 = arg1
W2:W1 = arg2
W3 = arg3
W5:W4 = arg4
W6 = arg5
W7 = 0x00W0 = arg1
W1 = arg3
W3:W2 = arg2
W5:W4 = arg4
W6 = arg5
W7 = 0x000x29E: LNK #0xE
! int i;
! volatile int q,t;
! struct myStruct nm,cv;
! nm.x=5;
0x2A0: MOV #0x5, W0
0x2A2: MOV W0, [W14+6]
! nm.y=1;
0x2A4: MOV #0x1, W0
0x2A6: MOV W0, [W14+8]
! cv=PogramaASM(nm);
0x2A8: ADD W14, #0xA, W0
0x2AA: MOV [W14+6], W2
0x2AC: MOV [W14+8], W3
0x2AE: RCALL PogramaASM!struct myStruct FuncionA(struct myStruct op){
0x2BA: LNK #0x4
0x2BC: MOV.D W2, [W14] ;Guardo los 2 valores a partir del Frame Pointer
! op.x=3;
0x2BE: MOV #0x3, W1 ;Asigno valores
0x2C0: MOV W1, [W14]
! op.y=2;
0x2C2: MOV #0x2, W1
0x2C4: MOV W1, [W14+2]
! return op;
0x2C6: MOV [W14++], [W0++] ;Devuelvo
0x2C8: MOV [W14--], [W0--]
!}
0x2CA: ULNK
0x2CC: RETURNFrame Pointer(W14) -> Stack Pointer(W15)
Stack Pointer(W15) = Stack Pointer(W15) + 2
Stack Pointer(W15) -> Frame Pointer(W14)
Stack Pointer(W15) = Stack Pointer(W15) + 0x04