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 ! > Moin, > > als Warnung an alle c2 Programmierer. Ich habe einen Bug in der VM beim > linksschiebe-Operator "shl" entdeckt . > > Wird als rechter operand eine Variable angegeben die von einem kürzeren Typ ist, > so ist das Ergebnis nicht korrekt. > Läßt sich mit folgendem einfachen Beispiel leicht verifizieren. > > > thread main > { > long l; > byte i; > > for i=0 ... 32 > { > l = 1 shl i; > } > > } > > bei i=13 ergibt sich 0b00000000000000000010000000000000 > bei i=14 ergibt sich 0b00000000000000000100000000000000 > bei i=15 ergibt sich 0b11111111111111111000000000000000 > bei i>=16 ergibt sich 0b00000000000000000000000000000000 > > Gibt man als rechten operanten eine Konstante oder wenn i als long deklariert wird funktioniert es > > l=1 shl 15 ; ergibt den korrekten Wert. > > Weißt jemand ob es für diesen Bug einen fix gibt ? > > Gruß > Olaf