isa_cmp: avr code update
authorMartin Perner <martin@perner.cc>
Thu, 21 Oct 2010 09:22:16 +0000 (11:22 +0200)
committerMartin Perner <martin@perner.cc>
Thu, 21 Oct 2010 09:24:08 +0000 (11:24 +0200)
1_isacmp/avr.tex
1_isacmp/cmp.tex

index 7af4a93dd57acc548ea0164de8b913fd2dccbe31..5f1646457f5d1197c913b13ce9c74b09e02f4946 100644 (file)
@@ -30,7 +30,7 @@ Folgende zwei Punkte finde ich besonders positiv:
                so, dass ziemlich alles was gebraucht wird abgedeckt ist.
        \item Das man viele Bitoperationen (auch Vergleiche f\"ur Conditional Jumps) zur Verf\"ugung hat.
 \end{itemize}
-Negativ auffallen ist mir:
+Negativ aufgefallen ist mir:
 \begin{itemize}
        \item Es gibt keinen \texttt{add} immediate Befehl um eine Konstante zu einem Register hinzuzuf\"ugen, jedoch um eine Konstante zu einem Word hinzuzuf\"ugen.
 \end{itemize}
@@ -44,37 +44,36 @@ Ich gehe von folgenden Vorbedingungen aus:
 \end{itemize}
 \begin{lstlisting}[caption=AVR Code]
 subroutine:
-       mov r28,"Adresse mit zu verwendenden Arraydaten"
-       mov r29,"Adresse mit zu verwendenden Arraydaten"
-
-       adiw r25:r24,1
-       mov  r10,r24
+       //mov r28,"Adresse mit zu verwendenden Arraydaten"
+       //mov r29,"Adresse mit zu verwendenden Arraydaten"
+       add r24,r24
+       adc r25,r25
+       add r24,r28
+       adc r25,r29
+       mov r10,r24
        mov r11,r25
-       subi r29:r28,2
-       ldi r1,0x01
-       ldi r2,0x01
+
+
        ldi r20,0x00
        ldi r21,0x00
-       cp  r10,r1
-       cpc r11,r2
-       brlt exit
 
-       ldi r1,0x00
-       ldi r2,0x00
+       cp  r10,r28
+       cpc r11,r29
+       breq exit
 
 for:
-       adiw r2:r1,1 # 2 c 2 b
-       adiw r29:r28,2
 
-       ldd r24,Y # 2 c 2 b
+       ldd r24,Y
        ldd r25,Y+1
 
-       add r20,r24 # 1 c 2 b
-       adc r21,r25 # 1 c 2 b
+       add r20,r24
+       adc r21,r25
+
+       adiw r29:r28,2
 
-       cp  r1,r10 # 1 c 2 b
-       cpc r2,r11 # 1 c 2 b
-       brlt for # 1 c if false 2 c if true 2 b
+       cp  r28,r10
+       cpc r29,r11
+       brlt for
 
        mov r24,r20
        mov r25,r21
@@ -83,7 +82,7 @@ exit:
 \end{lstlisting}
 Daraus ergibt sich:
 \begin{itemize}
-       \item Anzahl Instructionen: 9
-       \item Anzahl Zyklen: wenn Branch \texttt{false} 13 sonst 14
-       \item Anzahl Bytes: 18
+       \item Anzahl Instructionen: 8
+       \item Anzahl Zyklen: wenn Branch \texttt{false} 11 sonst 12
+       \item Anzahl Bytes: 16
 \end{itemize}
index c6a35d34fbdc3ea0e6db119fadeaa9f4cc602410..bb6de5277944567415e72a55a004711fc3201d7d 100644 (file)
@@ -13,9 +13,9 @@ Codesizes und Ausf\"uhrungszeiten des Codest\"ucks \texttt{sum} aus Listing~\ref
 \begin{center}
        \begin{tabular}{|l|c|c|c|c|c|}\hline
                Anzahl        & ARM & AVR   & MCS-51 & PowerPC & SPEAR2 \\ \hline
-               Instruktionen & 4   & 9     & 21     & 3       & 6      \\ \hline
-               Zyklen        & 8   & 13/14 & 30     & 3       & 7      \\ \hline
-               Bytes         & 16  & 18    & 32     & 12      & 12     \\ \hline
+               Instruktionen & 4   & 8     & 21     & 3       & 6      \\ \hline
+               Zyklen        & 8   & 11/12 & 30     & 3       & 7      \\ \hline
+               Bytes         & 16  & 16    & 32     & 12      & 12     \\ \hline
        \end{tabular}
        \caption{Vergleich der ISAs anhand der erfassten Kennwerte}
        \label{cmp_tab}