Hallo ein letztes mal fuer heute, ich hab grad crc16 in unserer ISA geschrieben (im git). Folgende Erkenntnisse: * Long Constants > c = 0xedb88320L ^ (c >> 1);Direkt im Instruktion Stream geht das nur vernuenftig, wenn wir mindestens 16-bit immediates haben. Ansonsten kann man Konstanten wie diese natuerlich auch in das Memory geben; von dort wuerde sich leicht was laden lassen, wenn die Daten oder ein Constantpool fuer Addressen bei 0x0 starten.
* if (c & 1) Wenn wir kurze immediates fuer predicate haben, dann PRED p0,p1, AZ, r2, #1 ansonsten eben LDI r14, #1 PRED p0,p1, AZ, r2, #1 (und wieder ein register mehr verschlissen) * crc_table[(c ^ buf[n]) & 0xff]Das Masking mit 0xFF ist im Moment nicht sonderlich elegant; brauch man sowas oft?
gute Nacht, benedikt