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 \- с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).