[CALU] crc16 and ISA comments

  • From: Benedikt Huber <benedikt@xxxxxxxxxxxxxxxxxx>
  • To: calu-ss2010-tuwien@xxxxxxxxxxxxx
  • Date: Sun, 11 Apr 2010 22:28:04 +0200

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

Other related posts:

  • » [CALU] crc16 and ISA comments - Benedikt Huber