Math Processor Unit Library

libmpu – library of arithmetic functions for integer, real, and complex numbers of increased digit capacity

16 Commits   0 Branches   2 Tags
1ca800d6 (kx 2024-12-29 20:12:16 +0300   1) .\" Copyright 2024 Andrew V.Kosteltsev (kx@radix-linux.su)
1ca800d6 (kx 2024-12-29 20:12:16 +0300   2) .\"
1ca800d6 (kx 2024-12-29 20:12:16 +0300   3) .\"
1ca800d6 (kx 2024-12-29 20:12:16 +0300   4) .TH circular\-shifts 3  "December 27, 2024" "libmpu" "LibMPU Programmer's Manual"
1ca800d6 (kx 2024-12-29 20:12:16 +0300   5) .SH NAME
1ca800d6 (kx 2024-12-29 20:12:16 +0300   6) \fBirol\fP, \fBiror\fP, \fBircl\fP, \fBircr\fP \- операции циклического сдвига на один бит
1ca800d6 (kx 2024-12-29 20:12:16 +0300   7) .SH SYNOPSIS
1ca800d6 (kx 2024-12-29 20:12:16 +0300   8) .nf
1ca800d6 (kx 2024-12-29 20:12:16 +0300   9) .B #include <libmpu.h>
1ca800d6 (kx 2024-12-29 20:12:16 +0300  10) .PP
1ca800d6 (kx 2024-12-29 20:12:16 +0300  11) .BI "void irol( mpu_int *" c ", mpu_int *" a ", int " nb " );
1ca800d6 (kx 2024-12-29 20:12:16 +0300  12) .BI "void iror( mpu_int *" c ", mpu_int *" a ", int " nb " );
1ca800d6 (kx 2024-12-29 20:12:16 +0300  13) .BI "void ircl( mpu_int *" c ", mpu_int *" a ", int " nb " );
1ca800d6 (kx 2024-12-29 20:12:16 +0300  14) .BI "void ircr( mpu_int *" c ", mpu_int *" a ", int " nb " );
1ca800d6 (kx 2024-12-29 20:12:16 +0300  15) .fi
1ca800d6 (kx 2024-12-29 20:12:16 +0300  16) .SH DESCRIPTION
1ca800d6 (kx 2024-12-29 20:12:16 +0300  17) Для операций циклического сдвига на один бит входным операндом служит переменная размером
1ca800d6 (kx 2024-12-29 20:12:16 +0300  18) \fBnb\fP байт, находящаяся по адресу \fBa\fP, результат помещается в переменную того же размера,
1ca800d6 (kx 2024-12-29 20:12:16 +0300  19) расположенную по адресу \fBc\fP. Пространства, занимаемые входной и выходной переменной в памяти
1ca800d6 (kx 2024-12-29 20:12:16 +0300  20) могут пересекаться, как частично, так и полностью, что не влияет на правильность получаемого
1ca800d6 (kx 2024-12-29 20:12:16 +0300  21) результата. Содержимое переменной, расположенной по адресу \fBa\fP останется неизменным,
7ee94ee9 (kx 2024-12-30 20:56:27 +0300  22) после выполнения операции, если занимаемое ею пространство не пересекается с пространством,
1ca800d6 (kx 2024-12-29 20:12:16 +0300  23) занимаемым переменной \fBc\fP.
1ca800d6 (kx 2024-12-29 20:12:16 +0300  24) .PP
1ca800d6 (kx 2024-12-29 20:12:16 +0300  25) При выполнениии операций циклического сдвига, флаг переноса \fBC\fP всегда содержит значение
1ca800d6 (kx 2024-12-29 20:12:16 +0300  26) последнего выдвинутого бита. Существуют следующие виды операций циклического сдвига:
1ca800d6 (kx 2024-12-29 20:12:16 +0300  27) .PP
1ca800d6 (kx 2024-12-29 20:12:16 +0300  28) .RS 3
1ca800d6 (kx 2024-12-29 20:12:16 +0300  29)     ROL \- циклический сдвиг влево на один бит.
1ca800d6 (kx 2024-12-29 20:12:16 +0300  30) .RE
1ca800d6 (kx 2024-12-29 20:12:16 +0300  31) .RS 3
1ca800d6 (kx 2024-12-29 20:12:16 +0300  32)     ROR \- циклический сдвиг вправо на один бит.
1ca800d6 (kx 2024-12-29 20:12:16 +0300  33) .RE
1ca800d6 (kx 2024-12-29 20:12:16 +0300  34) .RS 3
1ca800d6 (kx 2024-12-29 20:12:16 +0300  35)     RCL \- циклический сдвиг влево на один бит с участием флага переноса.
1ca800d6 (kx 2024-12-29 20:12:16 +0300  36) .RE
1ca800d6 (kx 2024-12-29 20:12:16 +0300  37) .RS 3
1ca800d6 (kx 2024-12-29 20:12:16 +0300  38)     RCR \- циклический сдвиг вправо на один бит с участием флага переноса.
1ca800d6 (kx 2024-12-29 20:12:16 +0300  39) .RE
1ca800d6 (kx 2024-12-29 20:12:16 +0300  40) .PP
1ca800d6 (kx 2024-12-29 20:12:16 +0300  41) Следующие таблицы иллюстрируют выполнение операций \fBirol\fP, \fBiror\fP.
1ca800d6 (kx 2024-12-29 20:12:16 +0300  42) .nf
1ca800d6 (kx 2024-12-29 20:12:16 +0300  43) .sp
1ca800d6 (kx 2024-12-29 20:12:16 +0300  44)       ┌────────────────┬───┬───────────────────┬────────────┐
1ca800d6 (kx 2024-12-29 20:12:16 +0300  45)       │ ROL(<<):       │ C │ значение операнда │ заполнение │
1ca800d6 (kx 2024-12-29 20:12:16 +0300  46)       ├────────────────┼───┼───────────────────┼────────────┤
1ca800d6 (kx 2024-12-29 20:12:16 +0300  47)       │ до операции    │   │      10110111     │   sign(1)  │
1ca800d6 (kx 2024-12-29 20:12:16 +0300  48)       ├────────────────┼───┼───────────────────┼────────────┤
1ca800d6 (kx 2024-12-29 20:12:16 +0300  49)       │ после операции │ 1 │      01101111     │            │
1ca800d6 (kx 2024-12-29 20:12:16 +0300  50)       └────────────────┴───┴───────────────────┴────────────┘
1ca800d6 (kx 2024-12-29 20:12:16 +0300  51) 
1ca800d6 (kx 2024-12-29 20:12:16 +0300  52)       ┌────────────────┬────────────┬───────────────────┬───┐
1ca800d6 (kx 2024-12-29 20:12:16 +0300  53)       │ ROR(>>):       │ заполнение │ значение операнда │ C │
1ca800d6 (kx 2024-12-29 20:12:16 +0300  54)       ├────────────────┼────────────┼───────────────────┼───┤
1ca800d6 (kx 2024-12-29 20:12:16 +0300  55)       │ до операции    │ low bit(1) │      10110111     │   │
1ca800d6 (kx 2024-12-29 20:12:16 +0300  56)       ├────────────────┼────────────┼───────────────────┼───┤
1ca800d6 (kx 2024-12-29 20:12:16 +0300  57)       │ после операции │            │      11011011     │ 1 │
1ca800d6 (kx 2024-12-29 20:12:16 +0300  58)       └────────────────┴────────────┴───────────────────┴───┘
1ca800d6 (kx 2024-12-29 20:12:16 +0300  59) .fi
1ca800d6 (kx 2024-12-29 20:12:16 +0300  60) .sp
1ca800d6 (kx 2024-12-29 20:12:16 +0300  61) Операции \fBirol\fP и \fBiror\fP (аналогично с командами сдвига \fBisal\fP, \fBisar\fP, \fBishl\fP,
1ca800d6 (kx 2024-12-29 20:12:16 +0300  62) \fBishr\fP) действуют на флаг переполнения \fBO\fP контролируя изменение знака операнда. Так же
1ca800d6 (kx 2024-12-29 20:12:16 +0300  63) выставляются флаги четности \fBP\fP, знака \fBS\fP и нуля \fBZ\fP. Флаг переноса из младшей тетрады
1ca800d6 (kx 2024-12-29 20:12:16 +0300  64) \fBA\fP не определяется и просто сбрасывается в 0.
1ca800d6 (kx 2024-12-29 20:12:16 +0300  65) .PP
1ca800d6 (kx 2024-12-29 20:12:16 +0300  66) В операциях \fBircl\fP и \fBircr\fP в сдвиге участвует флаг переноса \fBC\fP. Выдвигаемый из операнда
653f53cb (kx 2024-12-30 21:50:33 +0300  67) бит заносится во флаг переноса \fBC\fP после того, как предыдущее значение \fBC\fP поступит в
1ca800d6 (kx 2024-12-29 20:12:16 +0300  68) освободившуюся позицию.
1ca800d6 (kx 2024-12-29 20:12:16 +0300  69) .nf
1ca800d6 (kx 2024-12-29 20:12:16 +0300  70) .sp
1ca800d6 (kx 2024-12-29 20:12:16 +0300  71)       ┌────────────────┬───┬───────────────────┬────────────┐
1ca800d6 (kx 2024-12-29 20:12:16 +0300  72)       │ RCL(<<):       │ C │ значение операнда │ заполнение │
1ca800d6 (kx 2024-12-29 20:12:16 +0300  73)       ├────────────────┼───┼───────────────────┼────────────┤
1ca800d6 (kx 2024-12-29 20:12:16 +0300  74)       │ до операции    │ 0 │      10110111     │    C(0)    │
1ca800d6 (kx 2024-12-29 20:12:16 +0300  75)       ├────────────────┼───┼───────────────────┼────────────┤
1ca800d6 (kx 2024-12-29 20:12:16 +0300  76)       │ после операции │ 1 │      01101110     │            │
1ca800d6 (kx 2024-12-29 20:12:16 +0300  77)       └────────────────┴───┴───────────────────┴────────────┘
1ca800d6 (kx 2024-12-29 20:12:16 +0300  78) 
1ca800d6 (kx 2024-12-29 20:12:16 +0300  79)       ┌────────────────┬────────────┬───────────────────┬───┐
1ca800d6 (kx 2024-12-29 20:12:16 +0300  80)       │ RCR(>>):       │ заполнение │ значение операнда │ C │
1ca800d6 (kx 2024-12-29 20:12:16 +0300  81)       ├────────────────┼────────────┼───────────────────┼───┤
1ca800d6 (kx 2024-12-29 20:12:16 +0300  82)       │ до операции    │    C(0)    │      10110111     │ 0 │
1ca800d6 (kx 2024-12-29 20:12:16 +0300  83)       ├────────────────┼────────────┼───────────────────┼───┤
1ca800d6 (kx 2024-12-29 20:12:16 +0300  84)       │ после операции │            │      01011011     │ 1 │
1ca800d6 (kx 2024-12-29 20:12:16 +0300  85)       └────────────────┴────────────┴───────────────────┴───┘
1ca800d6 (kx 2024-12-29 20:12:16 +0300  86) .fi
1ca800d6 (kx 2024-12-29 20:12:16 +0300  87) .sp
1ca800d6 (kx 2024-12-29 20:12:16 +0300  88) Операции \fBircl\fP, \fBircr\fP воздействуют на флаги переноса \fBC\fP и переполнения \fBO\fP
1ca800d6 (kx 2024-12-29 20:12:16 +0300  89) аналогично всем предыдущим операциям. Флаг переноса из младшей тетрады \fBA\fP не определяется
1ca800d6 (kx 2024-12-29 20:12:16 +0300  90) и просто сбрасывается в 0.
1ca800d6 (kx 2024-12-29 20:12:16 +0300  91) .PP
1ca800d6 (kx 2024-12-29 20:12:16 +0300  92) Выставление флагов четности \fBP\fP и нуля \fBZ\fP операциями \fBircl\fP, \fBircr\fP несколько
1ca800d6 (kx 2024-12-29 20:12:16 +0300  93) отличается от предыдущих типов операций. Это относится и к флагу знака \fBS\fP. Так как операции
1ca800d6 (kx 2024-12-29 20:12:16 +0300  94) \fBircl\fP, \fBircr\fP могут использоваться для сдвигов нескольких слов совместно с другими
1ca800d6 (kx 2024-12-29 20:12:16 +0300  95) командами сдвига и, как правило, завершают такие составные операции, хотелось бы, после их
653f53cb (kx 2024-12-30 21:50:33 +0300  96) завершения, иметь состояние флагов \fBP\fP и \fBZ\fP соответствующим не только последнему
1ca800d6 (kx 2024-12-29 20:12:16 +0300  97) сдвигаемому слову, а целиком всей сдвигаемой комбинации слов.
1ca800d6 (kx 2024-12-29 20:12:16 +0300  98) .PP
1ca800d6 (kx 2024-12-29 20:12:16 +0300  99) Для этого операция \fBircr\fP выставляет свои флаги (\fBP\fP, \fBS\fP), а операция \fBircl\fP не
1ca800d6 (kx 2024-12-29 20:12:16 +0300 100) определяет свои флаги (\fBP\fP, \fBS\fP) и не изменяет их предыдущих значений. Флаг нуля \fBZ\fP
1ca800d6 (kx 2024-12-29 20:12:16 +0300 101) обеими операциями (\fBircl\fP, \fBircr\fP) выставляется по \fBЛогическому И\fP (\fBAND\fP)
1ca800d6 (kx 2024-12-29 20:12:16 +0300 102) с предыдущим значением флага \fBZ\fP, то есть:
1ca800d6 (kx 2024-12-29 20:12:16 +0300 103) .nf
1ca800d6 (kx 2024-12-29 20:12:16 +0300 104) .sp
1ca800d6 (kx 2024-12-29 20:12:16 +0300 105)       ┌────────────────┬────────────────┬────────────────┐
1ca800d6 (kx 2024-12-29 20:12:16 +0300 106)       │                │   Значение Z,  │                │
1ca800d6 (kx 2024-12-29 20:12:16 +0300 107)       │   Предыдущее   │   полученное   │ Результирующее │
1ca800d6 (kx 2024-12-29 20:12:16 +0300 108)       │   значение Z   │  в результате  │   значение Z   │
1ca800d6 (kx 2024-12-29 20:12:16 +0300 109)       │                │    операции    │                │
ebc15ef0 (kx 2024-12-29 21:18:26 +0300 110)       ├────────────────┼────────────────┼────────────────┤
1ca800d6 (kx 2024-12-29 20:12:16 +0300 111)       │       1        │       0        │       0        │
ebc15ef0 (kx 2024-12-29 21:18:26 +0300 112)       ├────────────────┼────────────────┼────────────────┤
1ca800d6 (kx 2024-12-29 20:12:16 +0300 113)       │       1        │       1        │       1        │
ebc15ef0 (kx 2024-12-29 21:18:26 +0300 114)       ├────────────────┼────────────────┼────────────────┤
1ca800d6 (kx 2024-12-29 20:12:16 +0300 115)       │       0        │       0        │       0        │
ebc15ef0 (kx 2024-12-29 21:18:26 +0300 116)       ├────────────────┼────────────────┼────────────────┤
1ca800d6 (kx 2024-12-29 20:12:16 +0300 117)       │       0        │       1        │       0        │
ebc15ef0 (kx 2024-12-29 21:18:26 +0300 118)       └────────────────┴────────────────┴────────────────┘
1ca800d6 (kx 2024-12-29 20:12:16 +0300 119) 
1ca800d6 (kx 2024-12-29 20:12:16 +0300 120) .fi
1ca800d6 (kx 2024-12-29 20:12:16 +0300 121) .sp
1ca800d6 (kx 2024-12-29 20:12:16 +0300 122) Таким образом, если все слова, участвующие в комбинации сдвигов, дали нулевой результат, то и флаг
1ca800d6 (kx 2024-12-29 20:12:16 +0300 123) \fBZ\fP останется в значении \fBИСТИНА\fP, иначе, если хотя\-бы одно слово дало ненулевой результат,
1ca800d6 (kx 2024-12-29 20:12:16 +0300 124) флаг \fBZ\fP останется в состоянии \fBЛОЖЬ\fP.
1ca800d6 (kx 2024-12-29 20:12:16 +0300 125) .SS Примеры операций:
1ca800d6 (kx 2024-12-29 20:12:16 +0300 126) \fBСдвиг пары слов вправо\fP:
1ca800d6 (kx 2024-12-29 20:12:16 +0300 127) .PP
1ca800d6 (kx 2024-12-29 20:12:16 +0300 128) \fBisar\fP(11111101), \fBircr\fP(10011010); после \fBisar\fP результат = 11111110,
1ca800d6 (kx 2024-12-29 20:12:16 +0300 129) \fBC\fP=1, \fBO\fP=0, \fBP\fP=1, \fBZ\fP=0; после \fBircr\fP результат = 11001101,
1ca800d6 (kx 2024-12-29 20:12:16 +0300 130) \fBC\fP=0, \fBO\fP=0, \fBP\fP=0, \fBZ\fP=0. Общий результат: 1111111011001101.
1ca800d6 (kx 2024-12-29 20:12:16 +0300 131) Состояние флагов после операции \fBircr\fP гарантированно принадлежит ко всей
1ca800d6 (kx 2024-12-29 20:12:16 +0300 132) комбинации двух слов (размером по 8 бит каждое).
1ca800d6 (kx 2024-12-29 20:12:16 +0300 133) .sp
1ca800d6 (kx 2024-12-29 20:12:16 +0300 134) \fBСдвиг пары слов влево\fP:
1ca800d6 (kx 2024-12-29 20:12:16 +0300 135) .PP
1ca800d6 (kx 2024-12-29 20:12:16 +0300 136) \fBircl\fP(00111000), isal(10111111); после \fBisal\fP результат = 01111110,
1ca800d6 (kx 2024-12-29 20:12:16 +0300 137) \fBC\fP=1, \fBO\fP=1, \fBP\fP=1, \fBZ\fP=0; после \fBircl\fP результат = 01110001,
1ca800d6 (kx 2024-12-29 20:12:16 +0300 138) \fBC\fP=0, \fBO\fP=0, \fBP\fP=1, \fBZ\fP=0. Общий результат: 0111000101111110.
1ca800d6 (kx 2024-12-29 20:12:16 +0300 139) Состояние флагов после операции \fBisal\fP гарантированно принадлежит ко всей
1ca800d6 (kx 2024-12-29 20:12:16 +0300 140) комбинации двух слов (размером по 8 бит каждое). Заметим, что флаг \fBP\fP
1ca800d6 (kx 2024-12-29 20:12:16 +0300 141) выставлен операцией \fBisal\fP и не изменялся операцией \fBircl\fP, флаг
1ca800d6 (kx 2024-12-29 20:12:16 +0300 142) \fBZ\fP получен по \fBAND\fP между \fBZ\fP от \fBisal\fP и \fBZ\fP
1ca800d6 (kx 2024-12-29 20:12:16 +0300 143) от \fBircl\fP.
1ca800d6 (kx 2024-12-29 20:12:16 +0300 144) .sp
1ca800d6 (kx 2024-12-29 20:12:16 +0300 145) .SH EXAMPLES
1ca800d6 (kx 2024-12-29 20:12:16 +0300 146) .nf
1ca800d6 (kx 2024-12-29 20:12:16 +0300 147) .sp
1ca800d6 (kx 2024-12-29 20:12:16 +0300 148) #include <libmpu.h>
1ca800d6 (kx 2024-12-29 20:12:16 +0300 149) #include <stdio.h>
1ca800d6 (kx 2024-12-29 20:12:16 +0300 150) 
1ca800d6 (kx 2024-12-29 20:12:16 +0300 151) int main( void )
1ca800d6 (kx 2024-12-29 20:12:16 +0300 152) {
1ca800d6 (kx 2024-12-29 20:12:16 +0300 153)   int  rc = 0;
1ca800d6 (kx 2024-12-29 20:12:16 +0300 154) 
1ca800d6 (kx 2024-12-29 20:12:16 +0300 155)   __mpu_init();
1ca800d6 (kx 2024-12-29 20:12:16 +0300 156)   __mpu_extra_warnings = 1;
1ca800d6 (kx 2024-12-29 20:12:16 +0300 157) 
1ca800d6 (kx 2024-12-29 20:12:16 +0300 158)   {
1ca800d6 (kx 2024-12-29 20:12:16 +0300 159)     mpu_int8_t     c, d, a, b;
1ca800d6 (kx 2024-12-29 20:12:16 +0300 160)     mpu_int16_t    z;
1ca800d6 (kx 2024-12-29 20:12:16 +0300 161)     mpu_int       *pz = NULL;
1ca800d6 (kx 2024-12-29 20:12:16 +0300 162)     __mpu_char8_t  s[32];
1ca800d6 (kx 2024-12-29 20:12:16 +0300 163) 
1ca800d6 (kx 2024-12-29 20:12:16 +0300 164)     pz = (mpu_int *)&z;
1ca800d6 (kx 2024-12-29 20:12:16 +0300 165) 
1ca800d6 (kx 2024-12-29 20:12:16 +0300 166) #if ( MPU_BYTE_ORDER_BIG_ENDIAN == 1 )
1ca800d6 (kx 2024-12-29 20:12:16 +0300 167)     ++pz;
1ca800d6 (kx 2024-12-29 20:12:16 +0300 168) #endif
1ca800d6 (kx 2024-12-29 20:12:16 +0300 169) 
1ca800d6 (kx 2024-12-29 20:12:16 +0300 170)     iatoi( b, "0b10111111", NB_I8 );  /* low part  */
1ca800d6 (kx 2024-12-29 20:12:16 +0300 171)     iatoi( a, "0b00111000", NB_I8 );  /* high part */
1ca800d6 (kx 2024-12-29 20:12:16 +0300 172) 
1ca800d6 (kx 2024-12-29 20:12:16 +0300 173)     __mpu_clc(); /* clear Carry Flag */
1ca800d6 (kx 2024-12-29 20:12:16 +0300 174) 
1ca800d6 (kx 2024-12-29 20:12:16 +0300 175)     isal( d, b, NB_I8 );
1ca800d6 (kx 2024-12-29 20:12:16 +0300 176)     ircl( c, a, NB_I8 );
1ca800d6 (kx 2024-12-29 20:12:16 +0300 177) 
1ca800d6 (kx 2024-12-29 20:12:16 +0300 178)     icpy( pz, d, NB_I8, NB_I8 ); /*  low part of Z */
1ca800d6 (kx 2024-12-29 20:12:16 +0300 179) #if ( MPU_BYTE_ORDER_BIG_ENDIAN == 1 )
1ca800d6 (kx 2024-12-29 20:12:16 +0300 180)     --pz;
1ca800d6 (kx 2024-12-29 20:12:16 +0300 181) #else
1ca800d6 (kx 2024-12-29 20:12:16 +0300 182)     ++pz;
1ca800d6 (kx 2024-12-29 20:12:16 +0300 183) #endif
1ca800d6 (kx 2024-12-29 20:12:16 +0300 184)     icpy( pz, c, NB_I8, NB_I8 ); /* high part of Z */
1ca800d6 (kx 2024-12-29 20:12:16 +0300 185) 
1ca800d6 (kx 2024-12-29 20:12:16 +0300 186)     iitoa( s, z, RADIX_BIN, UPPERCASE, NB_I16 ); /* convert Z value to ASCII string S */
e3f8685d (kx 2024-12-30 18:22:24 +0300 187)     printf( "z = %s;\\n", s ); /* z = 0B0111000101111110; */
e3f8685d (kx 2024-12-30 18:22:24 +0300 188)     printf( "carry    = %d;\\n", __mpu_gtc() );  /* Carry Flag    */
e3f8685d (kx 2024-12-30 18:22:24 +0300 189)     printf( "overflow = %d;\\n", __mpu_gto() );  /* Overflow Flag */
1ca800d6 (kx 2024-12-29 20:12:16 +0300 190)   }
1ca800d6 (kx 2024-12-29 20:12:16 +0300 191) 
1ca800d6 (kx 2024-12-29 20:12:16 +0300 192)   __mpu_free_context();
1ca800d6 (kx 2024-12-29 20:12:16 +0300 193) 
1ca800d6 (kx 2024-12-29 20:12:16 +0300 194)   return( rc );
1ca800d6 (kx 2024-12-29 20:12:16 +0300 195) }
1ca800d6 (kx 2024-12-29 20:12:16 +0300 196) .fi
1ca800d6 (kx 2024-12-29 20:12:16 +0300 197) .SH SEE ALSO
1ca800d6 (kx 2024-12-29 20:12:16 +0300 198) .BR iadd(3),
1ca800d6 (kx 2024-12-29 20:12:16 +0300 199) .BR isub(3),
41c271da (kx 2025-01-05 15:42:39 +0300 200) .BR iadc(3),
1ca800d6 (kx 2024-12-29 20:12:16 +0300 201) .BR isbb(3),
1ca800d6 (kx 2024-12-29 20:12:16 +0300 202) .BR ishl(3),
1ca800d6 (kx 2024-12-29 20:12:16 +0300 203) .BR ishr(3),
1ca800d6 (kx 2024-12-29 20:12:16 +0300 204) .BR isal(3),
41c271da (kx 2025-01-05 15:42:39 +0300 205) .BR isar(3),
41c271da (kx 2025-01-05 15:42:39 +0300 206) .BR ishln(3),
41c271da (kx 2025-01-05 15:42:39 +0300 207) .BR ishrn(3),
41c271da (kx 2025-01-05 15:42:39 +0300 208) .BR isaln(3),
41c271da (kx 2025-01-05 15:42:39 +0300 209) .BR isarn(3),
41c271da (kx 2025-01-05 15:42:39 +0300 210) .BR iroln(3),
41c271da (kx 2025-01-05 15:42:39 +0300 211) .BR irorn(3),
41c271da (kx 2025-01-05 15:42:39 +0300 212) .BR ircln(3),
41c271da (kx 2025-01-05 15:42:39 +0300 213) .BR ircrn(3),
41c271da (kx 2025-01-05 15:42:39 +0300 214) .BR ineg(3),
41c271da (kx 2025-01-05 15:42:39 +0300 215) .BR inot(3),
41c271da (kx 2025-01-05 15:42:39 +0300 216) .BR iand(3),
41c271da (kx 2025-01-05 15:42:39 +0300 217) .BR itest(3),
41c271da (kx 2025-01-05 15:42:39 +0300 218) .BR icmp(3),
41c271da (kx 2025-01-05 15:42:39 +0300 219) .BR ior(3),
41c271da (kx 2025-01-05 15:42:39 +0300 220) .BR ixor(3),
41c271da (kx 2025-01-05 15:42:39 +0300 221) .BR iinc(3),
41c271da (kx 2025-01-05 15:42:39 +0300 222) .BR idec(3),
41c271da (kx 2025-01-05 15:42:39 +0300 223) .BR ixchg(3),
41c271da (kx 2025-01-05 15:42:39 +0300 224) .BR icpy(3),
41c271da (kx 2025-01-05 15:42:39 +0300 225) .BR icvt(3),
41c271da (kx 2025-01-05 15:42:39 +0300 226) .BR imul(3),
41c271da (kx 2025-01-05 15:42:39 +0300 227) .BR ismul(3),
41c271da (kx 2025-01-05 15:42:39 +0300 228) .BR idiv(3),
41c271da (kx 2025-01-05 15:42:39 +0300 229) .BR isdiv(3),
41c271da (kx 2025-01-05 15:42:39 +0300 230) .BR iatoi(3),
41c271da (kx 2025-01-05 15:42:39 +0300 231) .BR iatoui(3),
41c271da (kx 2025-01-05 15:42:39 +0300 232) .BR iitoa(3),
41c271da (kx 2025-01-05 15:42:39 +0300 233) .BR iuitoa(3).