Zur Übersicht - INFO - Neueste 50 Beiträge - Neuer Beitrag - Suchen - FAQ - Zum CC1-Forum - Zum CC-Pro-Forum

Re: mem.copy: Quell-Array Position? Kategorie: Programmierung (von AndrĂ© H. - 4.01.2005 21:01)
Als Antwort auf Re: mem.copy: Quell-Array Position? von GĂĽnni - 4.01.2005 20:38
Ich nutze:
C-Control II Unit, C164CI-ControllerBoard, CC2-Application-Board, CC2-StarterBoard, CC2-ReglerBoard, OSOPT V3.0
Hallo GĂĽnni,

> wobei wir gerade bei mem-Modul sind:
> für die nächsten Revisision hätte ich für getlong und geting (put...) einen Verbesserrungsvorschlag.
> Und zwar das man angeben kann ob die Daten MSB oder LSB abgelegt sind.
> Das erleichtert die Kommunikation mit anderen Systemen die nicht zufällig MSB-Standard haben und
> spart einem lä�tige "Umbauarbeiten".

Hier kann ich nichts ändern, ohne das OS selbst anzupassen.
Denn alle Funktionen, die in mem.c2 nur aus einer inline-Zeile bestehen,
sind eigene VM-Codes des OS.

Hier bleibt dann nichts anderes übrig, als folgendes Konstrukt, wenn man "LSB first" benötigt:

function getlongLSBfirst(byte src[]) returns long
{long x;
 x=(src[3] shl 8) or src[2];
 return (x shl 16) or (src[1] shl 8) or src[0];
}

function getintLSBfirst(byte src[]) returns int
{
 return (src[1] shl 8) or src[0];
}


Gut, man könnte hier auch eine Mini-ASM-Routine, wie für die ROL/ROR-Geschichte verwenden:
In Assembler sieht das dann so aus:

getint  proc far
        CALLS   OSsegment,POP_R4        ;source
        EXTS    #8,#2
        MOVB    RL5, [R4+]
        MOVB    RH5, [R4]
        MOV     R12, R5
        CALLS   OSsegment,PUSH_R12
        POP R1
        POP R1
        RETS
getint  endp

getlong proc far
        CALLS   OSsegment,POP_R4        ;source
        EXTS    #8,#4
        MOVB    RL5, [R4+]
        MOVB    RH5, [R4+]
        MOVB    RL6, [R4+]
        MOVB    RH6, [R4]
        MOV     R12, R5
        MOV     R13, R3
        CALLS   OSsegment,PUSH_LONG
        POP R1
        POP R1
        RETS
getlong endp


Ob sich der Aufwand aber lohnt, bezweifle ich fast.
Zumindest bei der Verwendung von Integer wird es zeitlich kaum einen Gewinn geben.
Bei Long wird die AusfĂĽhrung etwas schneller sein.
Besser wäre es dann den kompletten Datenrahmen, den man erhält, mit ASM zu
zerlegen, um wirklich Zeit zu sparen.
Aber man mu� hier immer abwägen, wie zeitkritisch etwas ist.

MfG André H.



Antworten bitte nur ins Forum!
Fragen per EMail auf Forum-Postings werden nicht beantwortet!

Das macht meine Heizung gerade


    Antwort schreiben


Antworten:

Re: mem.copy: Quell-Array Position? (von Thomas - 5.01.2005 17:29)
    Re: mem.copy: Quell-Array Position? (von André H. - 12.01.2005 21:00)
        Re: mem.copy: Quell-Array Position? (von Thomas - 13.01.2005 21:38)
            Re: mem.copy: Quell-Array Position? (von André H. - 18.01.2005 22:48)
                Re: mem.copy: Quell-Array Position? (von Thomas - 18.01.2005 23:55)
                    Re: mem.copy: Quell-Array Position? (von André H. - 21.01.2005 19:25)
            Re: mem.copy: Quell-Array Position? (von Holger - 14.01.2005 12:24)
                Re: mem.copy: Quell-Array Position? (von Thomas - 14.01.2005 18:09)