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 \- сyclic shift operations by one bit
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) For cyclic shift operations by one bit, the input operand is a variable of size \fBnb\fP
1ca800d6 (kx 2024-12-29 20:12:16 +0300 18) bytes located at address \fBa\fP, the result is placed in a variable of the same size located
1ca800d6 (kx 2024-12-29 20:12:16 +0300 19) at address \fBc\fP. The spaces occupied by the input and output variables may overlap partially
1ca800d6 (kx 2024-12-29 20:12:16 +0300 20) or completely, which does not affect the correctness of the result. The content of the variable
1ca800d6 (kx 2024-12-29 20:12:16 +0300 21) located at address \fBa\fP will remain unchanged after the operation if the space occupied by
1ca800d6 (kx 2024-12-29 20:12:16 +0300 22) it does not overlap with the space occupied by variable \fBc\fP.
1ca800d6 (kx 2024-12-29 20:12:16 +0300 23) .PP
1ca800d6 (kx 2024-12-29 20:12:16 +0300 24) When performing cyclic shift operations, the carry flag \fBC\fP always contains the value of the
af4d4942 (kx 2024-12-30 12:16:19 +0300 25) last pushed outward bit. The following types of cyclic shift operations are available:
1ca800d6 (kx 2024-12-29 20:12:16 +0300 26) .PP
1ca800d6 (kx 2024-12-29 20:12:16 +0300 27) .RS 3
1ca800d6 (kx 2024-12-29 20:12:16 +0300 28) ROL \- cyclic shift to the left by one bit.
1ca800d6 (kx 2024-12-29 20:12:16 +0300 29) .RE
1ca800d6 (kx 2024-12-29 20:12:16 +0300 30) .RS 3
1ca800d6 (kx 2024-12-29 20:12:16 +0300 31) ROR \- cyclic shift to the right by one bit.
1ca800d6 (kx 2024-12-29 20:12:16 +0300 32) .RE
1ca800d6 (kx 2024-12-29 20:12:16 +0300 33) .RS 3
1ca800d6 (kx 2024-12-29 20:12:16 +0300 34) RCL \- cyclic shift to the left by one bit involving the carry flag.
1ca800d6 (kx 2024-12-29 20:12:16 +0300 35) .RE
1ca800d6 (kx 2024-12-29 20:12:16 +0300 36) .RS 3
1ca800d6 (kx 2024-12-29 20:12:16 +0300 37) RCR \- cyclic shift to the right by one bit involving the carry flag.
1ca800d6 (kx 2024-12-29 20:12:16 +0300 38) .RE
1ca800d6 (kx 2024-12-29 20:12:16 +0300 39) .PP
1ca800d6 (kx 2024-12-29 20:12:16 +0300 40) The following tables illustrate the execution of \fBirol\fP, \fBiror\fP operations.
1ca800d6 (kx 2024-12-29 20:12:16 +0300 41) .nf
1ca800d6 (kx 2024-12-29 20:12:16 +0300 42) .sp
1ca800d6 (kx 2024-12-29 20:12:16 +0300 43) ┌────────────────┬───┬───────────────────┬────────────┐
1ca800d6 (kx 2024-12-29 20:12:16 +0300 44) │ ROL(<<): │ C │ operand value │ filling │
1ca800d6 (kx 2024-12-29 20:12:16 +0300 45) ├────────────────┼───┼───────────────────┼────────────┤
1ca800d6 (kx 2024-12-29 20:12:16 +0300 46) │ before │ │ 10110111 │ sign(1) │
1ca800d6 (kx 2024-12-29 20:12:16 +0300 47) ├────────────────┼───┼───────────────────┼────────────┤
1ca800d6 (kx 2024-12-29 20:12:16 +0300 48) │ after │ 1 │ 01101111 │ │
1ca800d6 (kx 2024-12-29 20:12:16 +0300 49) └────────────────┴───┴───────────────────┴────────────┘
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) │ ROR(>>): │ filling │ operand value │ C │
1ca800d6 (kx 2024-12-29 20:12:16 +0300 53) ├────────────────┼────────────┼───────────────────┼───┤
1ca800d6 (kx 2024-12-29 20:12:16 +0300 54) │ before │ low bit(1) │ 10110111 │ │
1ca800d6 (kx 2024-12-29 20:12:16 +0300 55) ├────────────────┼────────────┼───────────────────┼───┤
1ca800d6 (kx 2024-12-29 20:12:16 +0300 56) │ after │ │ 11011011 │ 1 │
1ca800d6 (kx 2024-12-29 20:12:16 +0300 57) └────────────────┴────────────┴───────────────────┴───┘
1ca800d6 (kx 2024-12-29 20:12:16 +0300 58) .fi
1ca800d6 (kx 2024-12-29 20:12:16 +0300 59) .sp
1ca800d6 (kx 2024-12-29 20:12:16 +0300 60) The \fBirol\fP and \fBiror\fP operations (similar to the shift commands \fBisal\fP, \fBisar\fP,
1ca800d6 (kx 2024-12-29 20:12:16 +0300 61) \fBishl\fP, \fBishr\fP) act on the overflow flag \fBO\fP to control the sign change of the operand.
1ca800d6 (kx 2024-12-29 20:12:16 +0300 62) The parity \fBP\fP, sign \fBS\fP, and zero \fBZ\fP flags are also set. The carry flag from the
1ca800d6 (kx 2024-12-29 20:12:16 +0300 63) lowest tetrad \fBA\fP is not defined and is simply reset to 0.
1ca800d6 (kx 2024-12-29 20:12:16 +0300 64) .PP
1ca800d6 (kx 2024-12-29 20:12:16 +0300 65) In \fBircl\fP and \fBircr\fP operations, the carry flag \fBC\fP is involved in the shift.
1ca800d6 (kx 2024-12-29 20:12:16 +0300 66) The bit to be shifted out of the operand is written to the carry flag \fBC\fP after the
1ca800d6 (kx 2024-12-29 20:12:16 +0300 67) previous \fBC\fP value enters the vacant position.
1ca800d6 (kx 2024-12-29 20:12:16 +0300 68) .nf
1ca800d6 (kx 2024-12-29 20:12:16 +0300 69) .sp
1ca800d6 (kx 2024-12-29 20:12:16 +0300 70) ┌────────────────┬───┬───────────────────┬────────────┐
1ca800d6 (kx 2024-12-29 20:12:16 +0300 71) │ RCL(<<): │ C │ operand value │ filling │
1ca800d6 (kx 2024-12-29 20:12:16 +0300 72) ├────────────────┼───┼───────────────────┼────────────┤
1ca800d6 (kx 2024-12-29 20:12:16 +0300 73) │ before │ 0 │ 10110111 │ C(0) │
1ca800d6 (kx 2024-12-29 20:12:16 +0300 74) ├────────────────┼───┼───────────────────┼────────────┤
1ca800d6 (kx 2024-12-29 20:12:16 +0300 75) │ after │ 1 │ 01101110 │ │
1ca800d6 (kx 2024-12-29 20:12:16 +0300 76) └────────────────┴───┴───────────────────┴────────────┘
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) │ RCR(>>): │ filling │ operand value │ C │
1ca800d6 (kx 2024-12-29 20:12:16 +0300 80) ├────────────────┼────────────┼───────────────────┼───┤
1ca800d6 (kx 2024-12-29 20:12:16 +0300 81) │ before │ C(0) │ 10110111 │ 0 │
1ca800d6 (kx 2024-12-29 20:12:16 +0300 82) ├────────────────┼────────────┼───────────────────┼───┤
1ca800d6 (kx 2024-12-29 20:12:16 +0300 83) │ after │ │ 01011011 │ 1 │
1ca800d6 (kx 2024-12-29 20:12:16 +0300 84) └────────────────┴────────────┴───────────────────┴───┘
1ca800d6 (kx 2024-12-29 20:12:16 +0300 85) .fi
1ca800d6 (kx 2024-12-29 20:12:16 +0300 86) .sp
1ca800d6 (kx 2024-12-29 20:12:16 +0300 87) The \fBircl\fP, \fBircr\fP operations affect the carry \fBC\fP and overflow \fBO\fP flags
1ca800d6 (kx 2024-12-29 20:12:16 +0300 88) in the same way as all previous operations. The carry flag from the lowest tetrad \fBA\fP
1ca800d6 (kx 2024-12-29 20:12:16 +0300 89) is not defined and is simply reset to 0.
1ca800d6 (kx 2024-12-29 20:12:16 +0300 90) .PP
1ca800d6 (kx 2024-12-29 20:12:16 +0300 91) The setting of parity \fBP\fP and zero \fBZ\fP flags by \fBircl\fP, \fBircr\fP operations
1ca800d6 (kx 2024-12-29 20:12:16 +0300 92) is somewhat different from the previous types of operations. This also applies to the sign
1ca800d6 (kx 2024-12-29 20:12:16 +0300 93) flag \fBS\fP. Since \fBircl\fP, \fBircr\fP operations can be used to shift several words
1ca800d6 (kx 2024-12-29 20:12:16 +0300 94) together with other shift commands and, as a rule, complete such compound operations,
1ca800d6 (kx 2024-12-29 20:12:16 +0300 95) it would be desirable, after their completion, to have the state of the flags \fBP\fP
1ca800d6 (kx 2024-12-29 20:12:16 +0300 96) and \fBZ\fP corresponding, not only to the last shifted word, but to the whole shifted
1ca800d6 (kx 2024-12-29 20:12:16 +0300 97) combination of words.
1ca800d6 (kx 2024-12-29 20:12:16 +0300 98) .PP
1ca800d6 (kx 2024-12-29 20:12:16 +0300 99) For this purpose, the \fBircr\fP operation sets its flags (\fBP\fP, \fBS\fP), while the \fBircl\fP
1ca800d6 (kx 2024-12-29 20:12:16 +0300 100) operation does not define its flags (\fBP\fP, \fBS\fP) and does not change their previous values.
1ca800d6 (kx 2024-12-29 20:12:16 +0300 101) The zero flag \fBZ\fP by both operations (\fBircl\fP, \fBircr\fP) is set by \fBLogical AND\fP
1ca800d6 (kx 2024-12-29 20:12:16 +0300 102) with the previous value of the \fBZ\fP flag, i.e.:
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 value, │ │
1ca800d6 (kx 2024-12-29 20:12:16 +0300 107) │ Previous │ obtained │ Resulting │
1ca800d6 (kx 2024-12-29 20:12:16 +0300 108) │ Z value │ as a result of │ Z value │
1ca800d6 (kx 2024-12-29 20:12:16 +0300 109) │ │ operation │ │
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) Thus, if all words involved in the combination of shifts, gave zero result, then the flag \fBZ\fP
1ca800d6 (kx 2024-12-29 20:12:16 +0300 123) will remain in the value of \fBTRUE\fP, otherwise, if at least one word gave a non\-zero result,
1ca800d6 (kx 2024-12-29 20:12:16 +0300 124) the flag \fBZ\fP will remain in the state of \fBFALSE\fP.
1ca800d6 (kx 2024-12-29 20:12:16 +0300 125) .SS Examples of operations:
1ca800d6 (kx 2024-12-29 20:12:16 +0300 126) \fBShift a pair of words to the right\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); after \fBisar\fP result = 11111110,
1ca800d6 (kx 2024-12-29 20:12:16 +0300 129) \fBC\fP=1, \fBO\fP=0, \fBP\fP=1, \fBZ\fP=0; after \fBircr\fP result = 11001101,
1ca800d6 (kx 2024-12-29 20:12:16 +0300 130) \fBC\fP=0, \fBO\fP=0, \fBP\fP=0, \fBZ\fP=0. Total result: 1111111011001101.
1ca800d6 (kx 2024-12-29 20:12:16 +0300 131) The state of flags after \fBircr\fP operation is guaranteed to belong to
1ca800d6 (kx 2024-12-29 20:12:16 +0300 132) the whole combination of two words (8 bits each).
1ca800d6 (kx 2024-12-29 20:12:16 +0300 133) .sp
1ca800d6 (kx 2024-12-29 20:12:16 +0300 134) \fBShift a pair of words to the left\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), \fBisal\fP(10111111); after \fBisal\fP result = 01111110,
1ca800d6 (kx 2024-12-29 20:12:16 +0300 137) \fBC\fP=1, \fBO\fP=1, \fBP\fP=1, \fBZ\fP=0; after \fBircl\fP result = 01110001,
1ca800d6 (kx 2024-12-29 20:12:16 +0300 138) \fBC\fP=0, \fBO\fP=0, \fBP\fP=1, \fBZ\fP=0. Total result: 0111000101111110.
1ca800d6 (kx 2024-12-29 20:12:16 +0300 139) The state of the flags after the \fBisal\fP operation is guaranteed to
1ca800d6 (kx 2024-12-29 20:12:16 +0300 140) belong to the whole combination of two words (of size 8 bits each).
1ca800d6 (kx 2024-12-29 20:12:16 +0300 141) Note that flag \fBP\fP is set by operation \fBisal\fP and not changed
1ca800d6 (kx 2024-12-29 20:12:16 +0300 142) by operation \fBircl\fP, flag \fBZ\fP is obtained by \fBAND\fP between
1ca800d6 (kx 2024-12-29 20:12:16 +0300 143) \fBZ\fP from \fBisal\fP and \fBZ\fP from \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).