|
|
1.1 ! root 1: (* Copyright 1989 by AT&T Bell Laboratories *) ! 2: (* machinstr.sig ! 3: * ! 4: * J.H. Reppy ! 5: * Cornell University ! 6: * Ithaca, NY 14853 ! 7: * [email protected] ! 8: * ! 9: * HISTORY: ! 10: * 11/20/89 created ! 11: * ! 12: * This is an abstract interface to the machine instruction set. ! 13: *) ! 14: ! 15: signature MACHINSTR = ! 16: sig ! 17: eqtype register ! 18: eqtype label sharing type label = BaseCoder.label ! 19: ! 20: (** Instructions **) ! 21: ! 22: type instruction ! 23: ! 24: datatype ikind = IK_NOP | IK_JUMP | IK_INSTR ! 25: ! 26: val instrKind : instruction -> ikind ! 27: val nop : instruction ! 28: ! 29: (** Span dependent instructions **) ! 30: ! 31: type sdi ! 32: ! 33: val minSize : sdi -> int ! 34: val sizeOf : sdi -> (bool * int) ! 35: (* sizeOf(I) returns the size of I under the current address assignment ! 36: * for labels plus true if the size if the maximum possible for the sdi. *) ! 37: val expand : (sdi * int) -> instruction list ! 38: (* expand (I, n) returns the expansion of I into n bytes of machine ! 39: * instructions. *) ! 40: ! 41: (** Resource usage **) ! 42: ! 43: val numResources : int ! 44: val rUseDef : instruction -> (int list * int list) ! 45: val hazard : (instruction * instruction) -> bool ! 46: val needsNop : (instruction * instruction) -> bool ! 47: ! 48: end (* signature MACHINSTR *) ! 49:
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.