|
|
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.