MOA CRC — ZXNet «code.zx»

MOA CRC

ZXNet echo conference «code.zx»



from: Stanislav Udin
to: All
date: 29 July 2001
Привет all! Вот чуть подправил процедуру, которую Кирилл предложил, так что бы таблица получалась как у МОА, но что-то не получается у меня ее больше ускорить, хотя чувствую это можно сделать: DI LD HL,CRC_TAB LD C,0 BYTE LD E,0 LD D,C DEC D LD B,8 EX DE,HL NBIT ADD HL,HL JR C,NXOR LD A,L XOR #21 ;Здесь и ниже быстрее ксориться с содержимым ;регистра, однако регистров не хватает :( LD L,A LD A,H XOR #10 LD H,A NXOR DJNZ NBIT EX DE,HL LD (HL),D INC HL LD (HL),E INC HL DEC C JR NZ,BYTE RET CRC_TAB DEFS 512,0 А за одно может и МОАшную процедуру ускорить можно? ;Cyclic Redundancy Check. ;Подсчет контрольной суммы. ;IN : [DE] - START, [BC] - LENGHT ;OUT: [DE] - CRC-SUMM. CRC LD HL,#FFFF PUSH IX PUSH DE POP IX EX DE,HL CRC_1 LD HL,CRC_TAB LD A,(IX) INC IX XOR E ADD A,L LD L,A JR NC,CRC_2 INC H CRC_2 LD A,D XOR (HL) LD E,A INC HL XOR A XOR (HL) LD D,A DEC BC LD A,C OR B JR NZ,CRC_1 POP IX RET Процедуры будут всегда использовать в паре, то есть вначале генериться таблица, а потом тут же расчет CRC. Может быть можно эти де процедуры объединить и ускорить этот общий конгламерат? Hужно будет общитывать всего 508 байт. Stanislav

from: Kirill Frolov
to: Stanislav Udin
date: 30 July 2001
Hемедленно нажми на RESET, Stanislav! 29 Jul 01 22:25, Stanislav Udin wrote to All: SU> Вот чуть подправил процедуру, которую Кирилл предложил, так что бы SU> таблица получалась как у МОА, но что-то не получается у меня ее больше SU> ускорить, хотя чувствую это можно сделать: Hужно думать об алгоритмической оптимизации, а не о коде. SU> LD H,A SU> NXOR DJNZ NBIT SU> EX DE,HL SU> LD (HL),D SU> INC HL SU> LD (HL),E SU> INC HL SU> - DEC C + INC C + LD A, C + CP 129 SU> JR NZ,BYTE SU> RET SU> CRC_TAB DEFS 512,0 CRC_TAB DEFS 258, 0 SU> CRC_1 LD HL,CRC_TAB SU> LD A,(IX) SU> INC IX SU> XOR E + ADD A, A + JR NC, $+3 + INC H SU> ADD A,L SU> LD L,A ^^^^^^^^^^ Вот ошибка. Из-за неё больше 257 байт в таблице не используется. SU> JR NC,CRC_2 SU> INC H SU> CRC_2 LD A,D