1 (***********************************************************************)
5 (* Xavier Leroy, projet Cristal, INRIA Rocquencourt *)
7 (* Copyright 1996 Institut National de Recherche en Informatique et *)
8 (* en Automatique. All rights reserved. This file is distributed *)
9 (* under the terms of the Q Public License version 1.0. *)
11 (***********************************************************************)
13 (* $Id: proc.mli 2553 1999-11-17 18:59:06Z xleroy $ *)
15 (* Processor descriptions *)
17 (* Instruction selection *)
18 val word_addressed: bool
20 (* Registers available for register allocation *)
21 val num_register_classes: int
22 val register_class: Reg.t -> int
23 val num_available_registers: int array
24 val first_available_register: int array
25 val register_name: int -> string
26 val phys_reg: int -> Reg.t
27 val rotate_registers: bool
29 (* Calling conventions *)
30 val loc_arguments: Reg.t array -> Reg.t array * int
31 val loc_results: Reg.t array -> Reg.t array
32 val loc_parameters: Reg.t array -> Reg.t array
33 val loc_external_arguments: Reg.t array -> Reg.t array * int
34 val loc_external_results: Reg.t array -> Reg.t array
35 val loc_exn_bucket: Reg.t
37 (* Maximal register pressures for pre-spilling *)
38 val safe_register_pressure: Mach.operation -> int
39 val max_register_pressure: Mach.operation -> int array
41 (* Registers destroyed by operations *)
42 val destroyed_at_oper: Mach.instruction_desc -> Reg.t array
43 val destroyed_at_raise: Reg.t array
45 (* Info for laying out the stack frame *)
46 val num_stack_slots: int array
47 val contains_calls: bool ref
49 (* Calling the assembler *)
50 val assemble_file: string -> string -> int