ВходНаше всё Теги codebook 无线电组件 Поиск Опросы Закон Суббота
20 июля
29480 Топик полностью
vmp (18.05.2005 16:23, просмотров: 1) ответил SM на Ответ:
Есть еще одно специфическое пожелание, но боюсь что оно слишком специфическое. Сделать аппаратную поддержку замены по таблице для ГОСТ 28147-89. Операция следующая - на входе в аккумуляторе число (2 или 4 тетрады), в DPTR - указатель на таблицу длиной 16 байт или слов. Дальше младшая тетрада меняется на младшую тетраду той строки таблицы, номер которой равен содержимому этой тетрады, старшая - на старшую. За один такт обращения к памяти это не сделать, тогда можно 2 команды на каждую тетраду. На псевдоассемблере 51-го будет что-то типа:
    mov dptr,#table
    mov a,val

    anl a,#0Fh
    mov a,@a+dptr
    anl a,#0Fh
    mov temp,a
   
    mov a,val
    swap a
    anl a,#0Fh
    mov a,@a+dptr
    
    anl a,#0F0h
    orl a,temp
И такая лабуда 4*32 раза для каждых 8 байт шифрования. Плюс еще циклический сдвиг 32 бит на 11 разрядов. На простом 51-м это делается очень медленно. Короче, если кто-то вдруг захочет реализовать ГОСТ 28147-89 на этом процессоре, то я бы добавил в него пару команд:
    xlatl:
    acc[7..4] = acc[7..4]
    acc[3..0] = mem[acc[3..0] + dptr][3..0]

    xlath:
    acc[7..4] = mem[acc[7..4] + dptr][7..4]
    acc[3..0] = acc[3..0]