User Tag List

Показано с 1 по 10 из 10

Тема: CRC32

Древовидный режим

Предыдущее сообщение Предыдущее сообщение   Следующее сообщение Следующее сообщение
  1. #4

    Регистрация
    27.01.2005
    Адрес
    С.-Петербург
    Сообщений
    93
    Спасибо Благодарностей отдано 
    9
    Спасибо Благодарностей получено 
    0
    Поблагодарили
    0 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от caro Посмотреть сообщение
    Давай, меня тоже интересует результат.
    А потом попробуем оптимизировать на ASMе.
    К сожалению, IAR использовал встроенные библиотеки для работы с long-ами...

    Код:
    ##############################################################################
    #                                                                            #
    # IAR Z80/64180 C-Compiler V4.06A/WIN                                        #
    #                                                                            #
    #       Compile time  =  23/Jan/2008  16:05:18                               #
    #       Target option =  Z80                                                 #
    #       Memory model  =  large                                               #
    #       Source file   =  d:\java\javaonzx\nextgen\crc.c                      #
    #       List file     =  d:\java\javaonzx\nextgen\debug\list\crc.lst         #
    #       Object file   =  d:\java\javaonzx\nextgen\debug\obj\crc.r01          #
    #       ASM file      =  d:\java\javaonzx\nextgen\debug\list\crc.s01         #
    #       Command line  =  -v0 -ml -uua -OD:\java\javaonzx\NextGen\Debug\Obj\  #
    #                        -e -K -w -g -s9 -RCODE -r0i                         #
    #                        -LD:\java\javaonzx\NextGen\Debug\List\ -q -t8 -x    #
    #                        -AD:\java\javaonzx\NextGen\Debug\List\ -X           #
    #                        -IC:\zx\IAR\EW23\z80\inc\                           #
    #                        D:\java\javaonzx\NextGen\crc.c                      #
    #                                                                            #
    #                           Copyright 2001 IAR Systems. All rights reserved. #
    ##############################################################################
    
       \   0000                    NAME    crc(16)
       \   0000                    RSEG    CODE(0)
       \   0000                    PUBLIC  CalcCRC32
       \   0000                    EXTERN  ?CLZ80L_4_06_L00
       \   0000                    EXTERN  ?L_AND_L03
       \   0000                    EXTERN  ?L_NOT_L03
       \   0000                    EXTERN  ?L_NEG_L03
       \   0000                    EXTERN  ?L_XORASG_L03
       \   0000                    EXTERN  ?SL_RSHASG_L03
       \   0000                    RSEG    CODE
       \   0000            CalcCRC32:
          1          //crc.c
          2          //Алгоритм вычисления CRC32 для файла UDI
          3          //Начальное значение CRC = 0xFFFFFFFF  (-1l).
          4          //Функция обновления CRC32 для одного байта Symbol:
          5          
          6          long CalcCRC32(long CRC, unsigned char Symbol)
          7          {
       \   0000  DDE5              PUSH    IX
       \   0002  C5                PUSH    BC
       \   0003  D5                PUSH    DE
       \   0004  F5                PUSH    AF
       \   0005  F5                PUSH    AF
          8             long temp;
          9             int k;
         10             CRC ^= -1l ^ Symbol;
       \   0006  210400            LD      HL,4
       \   0009  39                ADD     HL,SP
       \   000A  E5                PUSH    HL
       \   000B  210E00            LD      HL,14
       \   000E  39                ADD     HL,SP
       \   000F  6E                LD      L,(HL)
       \   0010  010000            LD      BC,0
       \   0013  61                LD      H,C
       \   0014  CD0000            CALL    ?L_NOT_L03
       \   0017  EB                EX      DE,HL
       \   0018  E1                POP     HL
       \   0019  CD0000            CALL    ?L_XORASG_L03
         11             for(k = 8; k--;) 
       \   001C  DD210800          LD      IX,8
       \   0020            ?0001:
       \   0020  DDE5              PUSH    IX
       \   0022  E1                POP     HL
       \   0023  7D                LD      A,L
       \   0024  B4                OR      H
       \   0025  210400            LD      HL,4
       \   0028  39                ADD     HL,SP
       \   0029  DD2B              DEC     IX
       \   002B  283F              JR      Z,?0000
       \   002D            ?0002:
         12                { temp = -(CRC & 1), CRC >>= 1, CRC ^= 0xEDB88320ul & temp; }
       \   002D  5E                LD      E,(HL)
       \   002E  EB                EX      DE,HL
       \   002F  7D                LD      A,L
       \   0030  E601              AND     1
       \   0032  6F                LD      L,A
       \   0033  2600              LD      H,0
       \   0035  4C                LD      C,H
       \   0036  41                LD      B,C
       \   0037  CD0000            CALL    ?L_NEG_L03
       \   003A  E5                PUSH    HL
       \   003B  210200            LD      HL,2
       \   003E  39                ADD     HL,SP
       \   003F  D1                POP     DE
       \   0040  73                LD      (HL),E
       \   0041  23                INC     HL
       \   0042  72                LD      (HL),D
       \   0043  23                INC     HL
       \   0044  71                LD      (HL),C
       \   0045  23                INC     HL
       \   0046  70                LD      (HL),B
       \   0047  23                INC     HL
       \   0048  3E01              LD      A,1
       \   004A  CD0000            CALL    ?SL_RSHASG_L03
       \   004D  E5                PUSH    HL
       \   004E  01B8ED            LD      BC,60856
       \   0051  C5                PUSH    BC
       \   0052  012083            LD      BC,33568
       \   0055  C5                PUSH    BC
       \   0056  210600            LD      HL,6
       \   0059  39                ADD     HL,SP
       \   005A  5E                LD      E,(HL)
       \   005B  23                INC     HL
       \   005C  56                LD      D,(HL)
       \   005D  23                INC     HL
       \   005E  4E                LD      C,(HL)
       \   005F  23                INC     HL
       \   0060  46                LD      B,(HL)
       \   0061  EB                EX      DE,HL
       \   0062  CD0000            CALL    ?L_AND_L03
       \   0065  EB                EX      DE,HL
       \   0066  E1                POP     HL
       \   0067  CD0000            CALL    ?L_XORASG_L03
       \   006A  18B4              JR      ?0001
       \   006C            ?0000:
         13             CRC ^= -1l;
       \   006C  01FFFF            LD      BC,65535
       \   006F  59                LD      E,C
       \   0070  50                LD      D,B
       \   0071  CD0000            CALL    ?L_XORASG_L03
         14             return CRC;
       \   0074  5E                LD      E,(HL)
       \   0075  23                INC     HL
       \   0076  56                LD      D,(HL)
       \   0077  23                INC     HL
       \   0078  4E                LD      C,(HL)
       \   0079  23                INC     HL
       \   007A  46                LD      B,(HL)
       \   007B  EB                EX      DE,HL
         15          }
       \   007C  F1                POP     AF
       \   007D  F1                POP     AF
       \   007E  F1                POP     AF
       \   007F  F1                POP     AF
       \   0080  DDE1              POP     IX
       \   0082  C9                RET
       \   0083                    END
    
    
                                           S Y M B O L - T A B L E
                                           =======================
    
    
                #include file(s):
    
           [ 1]       d:\java\javaonzx\nextgen\debug\obj\crc.r01
    
    
                Symbol                     Type     Class   Defline   Refline(s)
                ------                     ----     -----   -------   ----------
    
    CalcCRC32                          function    public        7          7
    
    
    Errors: none
    Warnings: none
    Code size: 131
    Constant size: 0
    Static variable size: Data(0) Iram(0)
    Добавлено через 4 минуты
    Цитата Сообщение от CityAceE Посмотреть сообщение
    Код:
          { temp = -(CRC & 1), CRC >>= 1, CRC ^= 0xEDB88320ul & temp; }
    Cмущает строка "-(CRC&1)", ведь из-за запятой её результат выражения никуда не сохраняется....
    Последний раз редактировалось valker; 23.01.2008 в 16:14. Причина: Добавлено сообщение

Информация о теме

Пользователи, просматривающие эту тему

Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •