Für dieses Forum muß Javascript im Browser aktiviert werden!
Kommentar: Einfügen von HTML im Kommentar: Link einfügen: <a href="LINKURL" target="_blank">LINKTITEL</a> Bild einfügen: <img src="BILDURL"> Text formatieren: <b>fetter Text</b> <i>kursiver Text</i> <u>unterstrichener Text</u> Kombinationen sind auch möglich z.B.: <b><i>fetter & kursiver Text</i></b> C2 Quellcode formatieren: <code>Quellcode</code> ASM Quellcode formatieren: <asm>Quellcode</asm> (Innerhalb eines Quellcodeabschnitts ist kein html möglich.) Wichtig: Bitte mache Zeilenumbrüche, bevor Du am rechten Rand des Eingabefeldes ankommst ! > 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: > <code> > 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]; > }</code> > > 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: > <asm> > 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</asm> > > 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.