2     #define X(NMemArgs, SetsZeroFlag, LeavesFlags)     5 #define T(a,b,c,d,e,f,g,h) {                          \     6     {[Kw]=K##a, [Kl]=K##b, [Ks]=K##c, [Kd]=K##d}, \     7     {[Kw]=K##e, [Kl]=K##f, [Ks]=K##g, [Kd]=K##h}  \    16 O(add,     
T(w,l,s,d, w,l,s,d), 1) 
X(2, 1, 0)
    17 O(sub,     
T(w,l,s,d, w,l,s,d), 1) 
X(2, 1, 0)
    18 O(div,     
T(w,l,s,d, w,l,s,d), 1) 
X(0, 0, 0)
    19 O(rem,     
T(w,l,e,e, w,l,e,e), 1) 
X(0, 0, 0)
    20 O(udiv,    
T(w,l,e,e, w,l,e,e), 1) 
X(0, 0, 0)
    21 O(urem,    
T(w,l,e,e, w,l,e,e), 1) 
X(0, 0, 0)
    22 O(mul,     
T(w,l,s,d, w,l,s,d), 1) 
X(2, 0, 0)
    23 O(and,     
T(w,l,e,e, w,l,e,e), 1) 
X(2, 1, 0)
    24 O(or,      
T(w,l,e,e, w,l,e,e), 1) 
X(2, 1, 0)
    25 O(xor,     
T(w,l,e,e, w,l,e,e), 1) 
X(2, 1, 0)
    26 O(sar,     
T(w,l,e,e, w,w,e,e), 1) 
X(1, 1, 0)
    27 O(shr,     
T(w,l,e,e, w,w,e,e), 1) 
X(1, 1, 0)
    28 O(shl,     
T(w,l,e,e, w,w,e,e), 1) 
X(1, 1, 0)
    31 O(ceqw,    
T(w,w,e,e, w,w,e,e), 1) 
X(0, 1, 0)
    32 O(cnew,    
T(w,w,e,e, w,w,e,e), 1) 
X(0, 1, 0)
    33 O(csgew,   
T(w,w,e,e, w,w,e,e), 1) 
X(0, 1, 0)
    34 O(csgtw,   
T(w,w,e,e, w,w,e,e), 1) 
X(0, 1, 0)
    35 O(cslew,   
T(w,w,e,e, w,w,e,e), 1) 
X(0, 1, 0)
    36 O(csltw,   
T(w,w,e,e, w,w,e,e), 1) 
X(0, 1, 0)
    37 O(cugew,   
T(w,w,e,e, w,w,e,e), 1) 
X(0, 1, 0)
    38 O(cugtw,   
T(w,w,e,e, w,w,e,e), 1) 
X(0, 1, 0)
    39 O(culew,   
T(w,w,e,e, w,w,e,e), 1) 
X(0, 1, 0)
    40 O(cultw,   
T(w,w,e,e, w,w,e,e), 1) 
X(0, 1, 0)
    42 O(ceql,    
T(l,l,e,e, l,l,e,e), 1) 
X(0, 1, 0)
    43 O(cnel,    
T(l,l,e,e, l,l,e,e), 1) 
X(0, 1, 0)
    44 O(csgel,   
T(l,l,e,e, l,l,e,e), 1) 
X(0, 1, 0)
    45 O(csgtl,   
T(l,l,e,e, l,l,e,e), 1) 
X(0, 1, 0)
    46 O(cslel,   
T(l,l,e,e, l,l,e,e), 1) 
X(0, 1, 0)
    47 O(csltl,   
T(l,l,e,e, l,l,e,e), 1) 
X(0, 1, 0)
    48 O(cugel,   
T(l,l,e,e, l,l,e,e), 1) 
X(0, 1, 0)
    49 O(cugtl,   
T(l,l,e,e, l,l,e,e), 1) 
X(0, 1, 0)
    50 O(culel,   
T(l,l,e,e, l,l,e,e), 1) 
X(0, 1, 0)
    51 O(cultl,   
T(l,l,e,e, l,l,e,e), 1) 
X(0, 1, 0)
    53 O(ceqs,    
T(s,s,e,e, s,s,e,e), 1) 
X(0, 1, 0)
    54 O(cges,    
T(s,s,e,e, s,s,e,e), 1) 
X(0, 1, 0)
    55 O(cgts,    
T(s,s,e,e, s,s,e,e), 1) 
X(0, 1, 0)
    56 O(cles,    
T(s,s,e,e, s,s,e,e), 1) 
X(0, 1, 0)
    57 O(clts,    
T(s,s,e,e, s,s,e,e), 1) 
X(0, 1, 0)
    58 O(cnes,    
T(s,s,e,e, s,s,e,e), 1) 
X(0, 1, 0)
    59 O(cos,     
T(s,s,e,e, s,s,e,e), 1) 
X(0, 1, 0)
    60 O(cuos,    
T(s,s,e,e, s,s,e,e), 1) 
X(0, 1, 0)
    62 O(ceqd,    
T(d,d,e,e, d,d,e,e), 1) 
X(0, 1, 0)
    63 O(cged,    
T(d,d,e,e, d,d,e,e), 1) 
X(0, 1, 0)
    64 O(cgtd,    
T(d,d,e,e, d,d,e,e), 1) 
X(0, 1, 0)
    65 O(cled,    
T(d,d,e,e, d,d,e,e), 1) 
X(0, 1, 0)
    66 O(cltd,    
T(d,d,e,e, d,d,e,e), 1) 
X(0, 1, 0)
    67 O(cned,    
T(d,d,e,e, d,d,e,e), 1) 
X(0, 1, 0)
    68 O(cod,     
T(d,d,e,e, d,d,e,e), 1) 
X(0, 1, 0)
    69 O(cuod,    
T(d,d,e,e, d,d,e,e), 1) 
X(0, 1, 0)
    72 O(storeb,  
T(w,e,e,e, m,e,e,e), 0) 
X(0, 0, 1)
    73 O(storeh,  
T(w,e,e,e, m,e,e,e), 0) 
X(0, 0, 1)
    74 O(storew,  
T(w,e,e,e, m,e,e,e), 0) 
X(0, 0, 1)
    75 O(storel,  
T(l,e,e,e, m,e,e,e), 0) 
X(0, 0, 1)
    76 O(stores,  
T(s,e,e,e, m,e,e,e), 0) 
X(0, 0, 1)
    77 O(stored,  
T(d,e,e,e, m,e,e,e), 0) 
X(0, 0, 1)
    79 O(loadsb,  
T(m,m,e,e, x,x,e,e), 0) 
X(0, 0, 1)
    80 O(loadub,  
T(m,m,e,e, x,x,e,e), 0) 
X(0, 0, 1)
    81 O(loadsh,  
T(m,m,e,e, x,x,e,e), 0) 
X(0, 0, 1)
    82 O(loaduh,  
T(m,m,e,e, x,x,e,e), 0) 
X(0, 0, 1)
    83 O(loadsw,  
T(m,m,e,e, x,x,e,e), 0) 
X(0, 0, 1)
    84 O(loaduw,  
T(m,m,e,e, x,x,e,e), 0) 
X(0, 0, 1)
    85 O(load,    
T(m,m,m,m, x,x,x,x), 0) 
X(0, 0, 1)
    88 O(extsb,   
T(w,w,e,e, x,x,e,e), 1) 
X(0, 0, 1)
    89 O(extub,   
T(w,w,e,e, x,x,e,e), 1) 
X(0, 0, 1)
    90 O(extsh,   
T(w,w,e,e, x,x,e,e), 1) 
X(0, 0, 1)
    91 O(extuh,   
T(w,w,e,e, x,x,e,e), 1) 
X(0, 0, 1)
    92 O(extsw,   
T(e,w,e,e, e,x,e,e), 1) 
X(0, 0, 1)
    93 O(extuw,   
T(e,w,e,e, e,x,e,e), 1) 
X(0, 0, 1)
    95 O(exts,    
T(e,e,e,s, e,e,e,x), 1) 
X(0, 0, 1)
    96 O(truncd,  
T(e,e,d,e, e,e,x,e), 1) 
X(0, 0, 1)
    97 O(stosi,   
T(s,s,e,e, x,x,e,e), 1) 
X(0, 0, 1)
    98 O(dtosi,   
T(d,d,e,e, x,x,e,e), 1) 
X(0, 0, 1)
    99 O(swtof,   
T(e,e,w,w, e,e,x,x), 1) 
X(0, 0, 1)
   100 O(sltof,   
T(e,e,l,l, e,e,x,x), 1) 
X(0, 0, 1)
   101 O(cast,    
T(s,d,w,l, x,x,x,x), 1) 
X(0, 0, 1)
   104 O(alloc4,  
T(e,l,e,e, e,x,e,e), 0) 
X(0, 0, 0)
   105 O(alloc8,  
T(e,l,e,e, e,x,e,e), 0) 
X(0, 0, 0)
   106 O(alloc16, 
T(e,l,e,e, e,x,e,e), 0) 
X(0, 0, 0)
   109 O(vaarg,   
T(m,m,m,m, x,x,x,x), 0) 
X(0, 0, 0)
   110 O(vastart, 
T(m,e,e,e, x,e,e,e), 0) 
X(0, 0, 0)
   112 O(
copy,    
T(w,l,s,d, x,x,x,x), 0) 
X(0, 0, 1)
   120 O(nop,     
T(x,x,x,x, x,x,x,x), 0) 
X(0, 0, 1)
   121 O(addr,    
T(m,m,e,e, x,x,e,e), 0) 
X(0, 0, 1)
   122 O(swap,    
T(w,l,s,d, w,l,s,d), 0) 
X(1, 0, 0)
   123 O(sign,    
T(w,l,e,e, x,x,e,e), 0) 
X(0, 0, 0)
   124 O(salloc,  
T(e,l,e,e, e,x,e,e), 0) 
X(0, 0, 0)
   125 O(xidiv,   
T(w,l,e,e, x,x,e,e), 0) 
X(1, 0, 0)
   126 O(xdiv,    
T(w,l,e,e, x,x,e,e), 0) 
X(1, 0, 0)
   127 O(xcmp,    
T(w,l,s,d, w,l,s,d), 0) 
X(1, 1, 0)
   128 O(xtest,   
T(w,l,e,e, w,l,e,e), 0) 
X(1, 1, 0)
   129 O(acmp,    
T(w,l,e,e, w,l,e,e), 0) 
X(0, 0, 0)
   130 O(acmn,    
T(w,l,e,e, w,l,e,e), 0) 
X(0, 0, 0)
   131 O(afcmp,   
T(e,e,s,d, e,e,s,d), 0) 
X(0, 0, 0)
   134 O(par,     
T(x,x,x,x, x,x,x,x), 0) 
X(0, 0, 0)
   135 O(parc,    
T(e,x,e,e, e,x,e,e), 0) 
X(0, 0, 0)
   136 O(pare,    
T(e,x,e,e, e,x,e,e), 0) 
X(0, 0, 0)
   137 O(arg,     
T(w,l,s,d, x,x,x,x), 0) 
X(0, 0, 0)
   138 O(argc,    
T(e,x,e,e, e,l,e,e), 0) 
X(0, 0, 0)
   139 O(arge,    
T(e,l,e,e, e,x,e,e), 0) 
X(0, 0, 0)
   140 O(call,    
T(m,m,m,m, x,x,x,x), 0) 
X(0, 0, 0)
   141 O(vacall,  
T(m,m,m,m, x,x,x,x), 0) 
X(0, 0, 0)
   144 O(flagieq,  
T(x,x,e,e, x,x,e,e), 0) 
X(0, 0, 1)
   145 O(flagine,  
T(x,x,e,e, x,x,e,e), 0) 
X(0, 0, 1)
   146 O(flagisge, 
T(x,x,e,e, x,x,e,e), 0) 
X(0, 0, 1)
   147 O(flagisgt, 
T(x,x,e,e, x,x,e,e), 0) 
X(0, 0, 1)
   148 O(flagisle, 
T(x,x,e,e, x,x,e,e), 0) 
X(0, 0, 1)
   149 O(flagislt, 
T(x,x,e,e, x,x,e,e), 0) 
X(0, 0, 1)
   150 O(flagiuge, 
T(x,x,e,e, x,x,e,e), 0) 
X(0, 0, 1)
   151 O(flagiugt, 
T(x,x,e,e, x,x,e,e), 0) 
X(0, 0, 1)
   152 O(flagiule, 
T(x,x,e,e, x,x,e,e), 0) 
X(0, 0, 1)
   153 O(flagiult, 
T(x,x,e,e, x,x,e,e), 0) 
X(0, 0, 1)
   154 O(flagfeq,  
T(x,x,e,e, x,x,e,e), 0) 
X(0, 0, 1)
   155 O(flagfge,  
T(x,x,e,e, x,x,e,e), 0) 
X(0, 0, 1)
   156 O(flagfgt,  
T(x,x,e,e, x,x,e,e), 0) 
X(0, 0, 1)
   157 O(flagfle,  
T(x,x,e,e, x,x,e,e), 0) 
X(0, 0, 1)
   158 O(flagflt,  
T(x,x,e,e, x,x,e,e), 0) 
X(0, 0, 1)
   159 O(flagfne,  
T(x,x,e,e, x,x,e,e), 0) 
X(0, 0, 1)
   160 O(flagfo,   
T(x,x,e,e, x,x,e,e), 0) 
X(0, 0, 1)
   161 O(flagfuo,  
T(x,x,e,e, x,x,e,e), 0) 
X(0, 0, 1)
 O
Перечисление всех операций QBE IL. 
#define T(a, b, c, d, e, f, g, h)
#define X(NMemArgs, SetsZeroFlag, LeavesFlags)
O(add, { {[Kw]=Kw, [Kl]=Kl, [Ks]=Ks, [Kd]=Kd }, {[Kw]=Kw, [Kl]=Kl, [Ks]=Ks, [Kd]=Kd } }, 1) O(sub