Нужно подсчитать сколько уйдёт времени на выполнение программы, МК ARM7TDMI, CLK =20МГц.
Может быть есть программы специальные, а то по тактам это извращение, т.к. код написанный на Си был дизасемблирован Ниже коды:
Код:
#include <SecondLab.h> // подключаем файл, созданный командой Generate
volatile unsigned int *result = ( unsigned int * ) Result ;
void IRQ_Handler (void)
{
}
void wait(unsigned int cnt)
{
volatile unsigned int i;
for (i = 0; i < cnt; i++)
{
volatile int ii;
for(ii=0; ii < 1; ii++)
{
#ifdef __ARM__
__asm
{
mov r0, r0
mov r0, r0
mov r0, r0
mov r0, r0
}
#else
asm(" mov r0, r0");
asm(" mov r0, r0");
asm(" mov r0, r0");
asm(" mov r0, r0");
#endif
}
}
}
void C_Entry ()
{
int index = 0;
while (1)
{
*result = index;
index ++ ;
wait(500000);
}
}
Этот код делает задержку. Было проверено на осциллографе - задержка вышла около 1,2с.
Ниже этот же код только ассемблер:
Код:
00000000: b #0x64
00000004: b #4
00000008: b #8
0000000c: b #0xc
00000010: b #0x10
00000014: mov r0,r0
00000018: ldr pc,#0x50 ; = #0x54
0000001c: b #0x1c
00000020: ldmvcdb r0!,{r0,r1,r6,r8-r11,sp,lr}^
00000024: stmvsda r7!,{r1,r4-r6,r8,r11,sp,lr}^
00000028: msrmi cpsr_flg,#0x74
0000002c: eorccs r2,r2,r9,lsr #32
00000030: eorcs r3,r12,r0,lsr r0
00000034: msrvc spsr_all,#0x40000005
00000038: strvsbt r6,[lr],#-0x563
0000003c: rsbvc r4,pc,#0x80000000
00000040: andeq r2,r0,r0,ror lr
00000044: andeq r0,r0,r0
00000048: andeq r0,r0,r0
0000004c: andeq r0,r0,r0
00000050: andeq r0,r0,r4,asr r0
00000054: stmdb sp!,{r0-r12,lr}
00000058: bl #0xe0
0000005c: ldmia sp!,{r0-r12,lr}
00000060: subs pc,lr,#4
00000064: mov r0,#0xd2
00000068: msr cpsr_all,r0
0000006c: ldr sp,#0xc4 ; = #0xd1032000
00000070: mov r0,#0xd3
00000074: msr cpsr_all,r0
00000078: ldr sp,#0xc8 ; = #0xd1031f00
0000007c: ldr r0,#0xcc ; = #0x1c0
00000080: ldr r1,#0xd0 ; = #0xd1030800
00000084: ldr r3,#0xd4 ; = #0xd1030814
00000088: cmp r0,r1
0000008c: beq #0xa0
00000090: cmp r1,r3
00000094: ldrcc r2,[r0],#4
00000098: strcc r2,[r1],#4
0000009c: bcc #0x90
000000a0: ldr r1,#0xd8 ; = #0xd1030814
000000a4: mov r2,#0
000000a8: cmp r3,r1
000000ac: strcc r2,[r3],#4
000000b0: bcc #0xa8
000000b4: mov r0,#0x50
000000b8: msr cpsr_all,r0
000000bc: ldr sp,#0xdc ; = #0xd1031e00
000000c0: b #0x168
000000c4: mrsle r2,cpsr
000000c8: mrsle r1,cpsr
000000cc: andeq r0,r0,r0,asr #3
000000d0: mrsle r0,cpsr
000000d4: mrsle r0,cpsr
000000d8: mrsle r0,cpsr
000000dc: mrsle r1,cpsr
000000e0: mov r12,sp
000000e4: stmdb sp!,{r11,r12,lr,pc}
000000e8: sub r11,r12,#4
000000ec: ldmdb r11,{r11,sp,pc}
000000f0: mov r12,sp
000000f4: stmdb sp!,{r11,r12,lr,pc}
000000f8: sub r11,r12,#4
000000fc: sub sp,sp,#0xc
00000100: str r0,[r11,#-0x10]
00000104: mov r3,#0
00000108: str r3,[r11,#-0x14]
0000010c: ldr r2,[r11,#-0x14]
00000110: ldr r3,[r11,#-0x10]
00000114: cmp r2,r3
00000118: bcc #0x120
0000011c: b #0x164
00000120: mov r3,#0
00000124: str r3,[r11,#-0x18]
00000128: ldr r3,[r11,#-0x18]
0000012c: cmp r3,#0
00000130: ble #0x144
00000134: ldr r3,[r11,#-0x14]
00000138: add r3,r3,#1
0000013c: str r3,[r11,#-0x14]
00000140: b #0x10c
00000144: mov r0,r0
00000148: mov r0,r0
0000014c: mov r0,r0
00000150: mov r0,r0
00000154: ldr r3,[r11,#-0x18]
00000158: add r3,r3,#1
0000015c: str r3,[r11,#-0x18]
00000160: b #0x128
00000164: ldmdb r11,{r11,sp,pc}
00000168: mov r12,sp
0000016c: stmdb sp!,{r11,r12,lr,pc}
00000170: sub r11,r12,#4
00000174: sub sp,sp,#4
00000178: mov r3,#0
0000017c: str r3,[r11,#-0x10]
00000180: ldr r3,#0x1b8 ; = #0xd1030800
00000184: ldr r1,[r3,#0]
00000188: ldr r3,[r11,#-0x10]
0000018c: and r2,r3,#0xf
00000190: ldr r3,#0x1bc ; = #0xd1030804
00000194: ldrb r3,[r3,r2]
00000198: str r3,[r1,#0]
0000019c: ldr r3,[r11,#-0x10]
000001a0: add r3,r3,#1
000001a4: str r3,[r11,#-0x10]
000001a8: mov r0,#0x7a000
000001ac: add r0,r0,#0x120
000001b0: bl #0xf0
000001b4: b #0x180
000001b8: mrsle r0,cpsr
000001bc: mrsle r0,cpsr
000001c0: strnesh pc,[pc],-r12
000001c4: adclt pc,r4,r0,asr #19
000001c8: stm??ia r2,{r0,r3,r4,r7,r9,r12,pc}
000001cc: orrhi r9,r8,#0x80
000001d0: cdphi p1,0x8,c10,c6,c6,#6
Хотя бы где здесь 500000 тактов ???