|
|
1.1 ! root 1: ///////// ! 2: / ! 3: / Relationals. ! 4: / Handles only test contexts, since other parts of the compiler transform ! 5: / all other contexts (like value) into the required '?' and ':' operations. ! 6: / Some special things handle bytes in a slightly better way than the default ! 7: / (saving the 'cbw') and other special things handle pointers. ! 8: / Pointers are compared for equality by comparing both segment and offset. ! 9: / Pointers are compared for inequality by comparing only the offset; ! 10: / the C code always assumes OPTIMIZE(3). ! 11: / ! 12: ///////// ! 13: ! 14: EQ: ! 15: NE: ! 16: GT: ! 17: GE: ! 18: LT: ! 19: LE: ! 20: ULT: ! 21: ULE: ! 22: UGT: ! 23: UGE: ! 24: ! 25: ///////// ! 26: / ! 27: / Simple stuff. ! 28: / Words and bytes. ! 29: / An immediate can be compared to any addressable thing. ! 30: / Special things for the byte compare to avoid the CBW. ! 31: / ! 32: ///////// ! 33: ! 34: % PREL ! 35: * NONE * * NONE ! 36: ADR BYTE ! 37: BYTE|MMX WORD ! 38: [ZCMPB] [AL],[AR] ! 39: [REL0] [LAB] ! 40: ! 41: % PREL ! 42: * NONE * * NONE ! 43: ADR|MMX WORD ! 44: IMM|MMX WORD ! 45: % PREL ! 46: * NONE * * NONE ! 47: RREG|LREG|MMX WORD ! 48: ADR|IMM WORD ! 49: [ZCMP] [AL],[AR] ! 50: [REL0] [LAB] ! 51: ! 52: % PREL|P_SLT ! 53: * ANYR ANYR * NONE ! 54: TREG BYTE ! 55: ADR|IMM BYTE ! 56: [ZCMPB] [LO R],[AR] ! 57: [REL0] [LAB] ! 58: ! 59: % PREL ! 60: * AX * * NONE ! 61: ADR BYTE ! 62: ADR|IMM BYTE ! 63: [ZMOVB] [LO R],[AL] ! 64: [ZCMPB] [LO R],[AR] ! 65: [REL0] [LAB] ! 66: ! 67: % PREL|P_SLT ! 68: * ANYR ANYR * NONE ! 69: TREG WORD ! 70: ADR|IMM WORD ! 71: [ZCMP] [R],[AR] ! 72: [REL0] [LAB] ! 73: ! 74: ///////// ! 75: / ! 76: / Longs and pointers. ! 77: / Equality. ! 78: / ! 79: ///////// ! 80: ! 81: % PEQ ! 82: WORD NONE * * NONE ! 83: ADR LONG ! 84: IMM|MMX LONG ! 85: [ZCMP] [HI AL],[HI AR] ! 86: [ZJNE] [LAB1] ! 87: [ZCMP] [LO AL],[LO AR] ! 88: [ZJE] [LAB] ! 89: [DLAB1]: ! 90: ! 91: % PEQ ! 92: * NONE ANYR * NONE ! 93: TREG LONG ! 94: UHC|MMX LONG ! 95: [ZOR] [HI RL],[HI RL] ! 96: [ZJNE] [LAB1] ! 97: [ZCMP] [LO RL],[LO AR] ! 98: [ZJE] [LAB] ! 99: [DLAB1]: ! 100: ! 101: % PEQ ! 102: * NONE ANYR * NONE ! 103: TREG LONG ! 104: LHC|MMX LONG ! 105: [ZCMP] [HI RL],[HI AR] ! 106: [ZJNE] [LAB1] ! 107: [ZOR] [LO RL],[LO RL] ! 108: [ZJE] [LAB] ! 109: [DLAB1]: ! 110: ! 111: % PEQ ! 112: * NONE ANYR * NONE ! 113: TREG LONG ! 114: ADR|IMM LONG ! 115: #ifndef ONLYSMALL ! 116: % PEQ ! 117: * NONE ANYR * NONE ! 118: TREG LPTX ! 119: ADR LPTX ! 120: #endif ! 121: [ZCMP] [HI RL],[HI AR] ! 122: [ZJNE] [LAB1] ! 123: [ZCMP] [LO RL],[LO AR] ! 124: [ZJE] [LAB] ! 125: [DLAB1]: ! 126: ! 127: #ifndef ONLYSMALL ! 128: % PEQ ! 129: * NONE ANYR * NONE ! 130: TREG LPTX ! 131: ADR|IMM WORD ! 132: [ZOR] [HI RL],[HI RL] ! 133: [ZJNE] [LAB1] ! 134: [ZCMP] [LO RL],[AR] ! 135: [ZJE] [LAB] ! 136: [DLAB1]: ! 137: ! 138: % PEQ ! 139: WORD ANYR ANYR * TEMP ! 140: TREG WORD ! 141: ADR|IMM LPTX ! 142: [ZMOV] [R],[HI AR] ! 143: [ZOR] [R],[R] ! 144: [ZJNE] [LAB1] ! 145: [ZCMP] [RL],[LO AR] ! 146: [ZJE] [LAB] ! 147: [DLAB1]: ! 148: #endif ! 149: ! 150: ///////// ! 151: / ! 152: / Inequality. Slightly different code for longs. ! 153: / ! 154: ///////// ! 155: ! 156: % PNE ! 157: * NONE * * NONE ! 158: ADR LONG ! 159: IMM|MMX LONG ! 160: [ZCMP] [HI AL],[HI AR] ! 161: [ZJNE] [LAB] ! 162: [ZCMP] [LO AL],[LO AR] ! 163: [ZJNE] [LAB] ! 164: ! 165: % PNE ! 166: * NONE ANYR * NONE ! 167: TREG LONG ! 168: UHC|MMX LONG ! 169: [ZOR] [HI RL],[HI RL] ! 170: [ZJNE] [LAB] ! 171: [ZCMP] [LO RL],[LO AR] ! 172: [ZJNE] [LAB] ! 173: ! 174: % PNE ! 175: * NONE ANYR * NONE ! 176: TREG LONG ! 177: LHC|MMX LONG ! 178: [ZCMP] [HI RL],[HI AR] ! 179: [ZJNE] [LAB] ! 180: [ZOR] [LO RL],[LO RL] ! 181: [ZJNE] [LAB] ! 182: ! 183: % PNE ! 184: * NONE ANYR * NONE ! 185: TREG LONG ! 186: ADR|IMM LONG ! 187: #ifndef ONLYSMALL ! 188: % PNE ! 189: * NONE ANYR * NONE ! 190: TREG LPTX ! 191: ADR LPTX ! 192: #endif ! 193: [ZCMP] [HI RL],[HI AR] ! 194: [ZJNE] [LAB] ! 195: [ZCMP] [LO RL],[LO AR] ! 196: [ZJNE] [LAB] ! 197: ! 198: #ifndef ONLYSMALL ! 199: % PNE ! 200: * NONE ANYR * NONE ! 201: TREG LPTX ! 202: ADR|IMM WORD ! 203: [ZOR] [HI RL],[HI RL] ! 204: [ZJNE] [LAB] ! 205: [ZCMP] [LO RL],[AR] ! 206: [ZJNE] [LAB] ! 207: ! 208: % PNE ! 209: WORD ANYR ANYR * TEMP ! 210: TREG WORD ! 211: ADR|IMM LPTX ! 212: [ZMOV] [R],[HI AR] ! 213: [ZOR] [R],[R] ! 214: [ZJNE] [LAB] ! 215: [ZCMP] [RL],[LO AR] ! 216: [ZJNE] [LAB] ! 217: #endif ! 218: ! 219: ///////// ! 220: / ! 221: / All the rest. ! 222: / ! 223: ///////// ! 224: ! 225: #ifndef ONLYSMALL ! 226: % PNEREL ! 227: * NONE * * NONE ! 228: ADR LPTX ! 229: IMM|MMX LPTX ! 230: [ZCMP] [LO AL],[LO AR] ! 231: [REL0] [LAB] ! 232: ! 233: % PNEREL ! 234: * NONE ANYR * NONE ! 235: TREG LPTX ! 236: ADR LPTX ! 237: [ZCMP] [LO RL],[LO AR] ! 238: [REL0] [LAB] ! 239: ! 240: % PNEREL ! 241: * NONE * * NONE ! 242: ADR LPTX ! 243: IMM|MMX WORD ! 244: [ZCMP] [LO AL],[AR] ! 245: [REL0] [LAB] ! 246: ! 247: % PNEREL ! 248: * NONE ANYR * NONE ! 249: TREG LPTX ! 250: ADR|IMM WORD ! 251: [ZCMP] [LO RL],[AR] ! 252: [REL0] [LAB] ! 253: ! 254: % PNEREL ! 255: * NONE * * NONE ! 256: ADR WORD ! 257: IMM|MMX LPTX ! 258: [ZCMP] [AL],[LO AR] ! 259: [REL0] [LAB] ! 260: ! 261: % PNEREL ! 262: * NONE ANYR * NONE ! 263: TREG WORD ! 264: ADR|IMM LPTX ! 265: [ZCMP] [RL],[LO AR] ! 266: [REL0] [LAB] ! 267: #endif ! 268: ! 269: % PNEREL ! 270: * NONE * * NONE ! 271: ADR LONG ! 272: IMM|MMX LONG ! 273: [ZCMP] [HI AL],[HI AR] ! 274: [LREL1] [LAB1] ! 275: [LREL0] [LAB] ! 276: [ZCMP] [LO AL],[LO AR] ! 277: [LREL2] [LAB] ! 278: [DLAB1]: ! 279: ! 280: % PNEREL ! 281: * NONE ANYR * NONE ! 282: TREG LONG ! 283: UHC|MMX LONG ! 284: [ZOR] [HI RL],[HI RL] ! 285: [LREL1] [LAB1] ! 286: [LREL0] [LAB] ! 287: [ZCMP] [LO RL],[LO AR] ! 288: [LREL2] [LAB] ! 289: [DLAB1]: ! 290: ! 291: % PNEREL ! 292: * NONE ANYR * NONE ! 293: TREG LONG ! 294: ADR|IMM LONG ! 295: [ZCMP] [HI RL],[HI AR] ! 296: [LREL1] [LAB1] ! 297: [LREL0] [LAB] ! 298: [ZCMP] [LO RL],[LO AR] ! 299: [LREL2] [LAB] ! 300: [DLAB1]: ! 301: ! 302: //////// ! 303: / ! 304: / Floating point, using the numeric data coprocessor (8087). ! 305: / ! 306: //////// ! 307: ! 308: #ifdef NDPDEF ! 309: % PREL ! 310: * * FPAC * NONE ! 311: TREG FF64 ! 312: ADR FS16 ! 313: [ZFCOMPI] [AR] ! 314: [CALL] [GID cfcc] ! 315: [REL0] [LAB] ! 316: ! 317: % PREL|P_SLT ! 318: * * FPAC * NONE ! 319: TREG FF64 ! 320: ADR FS32 ! 321: [ZFCOMPL] [AR] ! 322: [CALL] [GID cfcc] ! 323: [REL0] [LAB] ! 324: ! 325: % PREL|P_SLT ! 326: * * FPAC * NONE ! 327: TREG FF64 ! 328: ADR FF32 ! 329: [ZFCOMPF] [AR] ! 330: [CALL] [GID cfcc] ! 331: [REL0] [LAB] ! 332: ! 333: % PREL|P_SLT ! 334: * * FPAC * NONE ! 335: TREG FF64 ! 336: ADR FF64 ! 337: [ZFCOMPD] [AR] ! 338: [CALL] [GID cfcc] ! 339: [REL0] [LAB] ! 340: #endif
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.