isa_cmp: 8051 reorder of code
authorMartin Perner <martin@perner.cc>
Thu, 21 Oct 2010 09:25:57 +0000 (11:25 +0200)
committerMartin Perner <martin@perner.cc>
Thu, 21 Oct 2010 09:25:57 +0000 (11:25 +0200)
1_isacmp/8051.s
1_isacmp/8051.tex

index 3b45d0ea9de62bbed7401f33acd3e3816bb791fd..b41e4f438119a2154b9b7a8a0fb43df8c770a18d 100644 (file)
@@ -1,15 +1,12 @@
 ;clears (sum)
 mov r4, #0x00
 mov r5, #0x00
-
 ;i (sum)
 mov r0, #0x00
 mov r1, #0x00
-
 ;save away len
 mov _sum_len_1_1, dpl
 mov (_sum_len_1_1 +1), dph
-
 ;load datapointer with adress of array
 mov dpl, _sum_PARM_2
 mov dph, (_sum_PARM_2+1)
@@ -26,7 +23,6 @@ mov dph, (_sum_PARM_2+1)
        subb A,B
        ;jump to exit
        jnc 0002$
-
        ;fetch the array element and add
        movx A, @DPTR
        inc DPTR
@@ -36,7 +32,6 @@ mov dph, (_sum_PARM_2+1)
        addc A, r5
        mov r5, A
        inc DPTR
-
        ;increment loop counter and jump
        inc r0
        cjne r0, #0x00, 0001$
@@ -47,5 +42,4 @@ mov dph, (_sum_PARM_2+1)
 ; prepare return values
 mov dpl, r4
 mov dph, r5
-
 ret
index 66173f44831a615697cedff2c3895c2771913460..30d999b917e1c7935ec157592278479a02d87afa 100644 (file)
@@ -42,10 +42,9 @@ Das Ergebnis der \"Ubersetzung h\"angt von Vorbedingungen ab die nicht angegeben
        \item Die Adresse ist 16-Bit lang
        \item Es werden die Calling Conventions von SDCC verwendet
 \end{itemize}
-
+Wenn man von 8-Bit Daten ausgehen w\"urde, h\"atte eine Schleifeniteration f\"unf Instruktionen, eine Ausf\"uhrungszeit von 8$\mu$s und eine Codesize von 6 Bytes. Es ist also sehr sch\"on zu sehen das Operationen mit 16-Bit Daten sehr teuer sind im Vergleich zu 8-Bit Daten.
 \lstinputlisting[caption=MCS-51 Code]{8051.s}
 Das Timing wurde f\"ur die Original MCS-51 Architektur ermittelt.
 Es werden pro Schleifeniteration 21 Instruktionen ausgef\"uhrt. Dadurch ergibt sich eine Ausf\"uhrungszeit von 30$\mu$s (bei einer Clock von 12MHz) was 30 Maschinenzyklen beziehungsweise 360 Clocktakte entspricht. Die Codesize der Schleife ist 32 Bytes.
 
-Wenn man von 8-Bit Daten ausgehen w\"urde, h\"atte eine Schleifeniteration f\"unf Instruktionen, eine Ausf\"uhrungszeit von 8$\mu$s und eine Codesize von 6 Bytes. Es ist also sehr sch\"on zu sehen das Operationen mit 16-Bit Daten sehr teuer sind im Vergleich zu 8-Bit Daten.