1995-08-09 08:06:35 -07:00
|
|
|
(***********************************************************************)
|
|
|
|
(* *)
|
2011-07-27 07:17:02 -07:00
|
|
|
(* OCaml *)
|
1995-08-09 08:06:35 -07:00
|
|
|
(* *)
|
|
|
|
(* Xavier Leroy, projet Cristal, INRIA Rocquencourt *)
|
|
|
|
(* *)
|
1996-04-30 07:53:58 -07:00
|
|
|
(* Copyright 1996 Institut National de Recherche en Informatique et *)
|
1999-11-17 10:59:06 -08:00
|
|
|
(* en Automatique. All rights reserved. This file is distributed *)
|
|
|
|
(* under the terms of the Q Public License version 1.0. *)
|
1995-08-09 08:06:35 -07:00
|
|
|
(* *)
|
|
|
|
(***********************************************************************)
|
|
|
|
|
|
|
|
(* $Id$ *)
|
|
|
|
|
1995-06-15 01:17:29 -07:00
|
|
|
(* Processor descriptions *)
|
|
|
|
|
|
|
|
(* Instruction selection *)
|
1995-07-25 04:37:38 -07:00
|
|
|
val word_addressed: bool
|
1995-06-15 01:17:29 -07:00
|
|
|
|
|
|
|
(* Registers available for register allocation *)
|
|
|
|
val num_register_classes: int
|
|
|
|
val register_class: Reg.t -> int
|
|
|
|
val num_available_registers: int array
|
|
|
|
val first_available_register: int array
|
|
|
|
val register_name: int -> string
|
|
|
|
val phys_reg: int -> Reg.t
|
1995-10-25 07:54:47 -07:00
|
|
|
val rotate_registers: bool
|
1995-06-15 01:17:29 -07:00
|
|
|
|
|
|
|
(* Calling conventions *)
|
|
|
|
val loc_arguments: Reg.t array -> Reg.t array * int
|
|
|
|
val loc_results: Reg.t array -> Reg.t array
|
|
|
|
val loc_parameters: Reg.t array -> Reg.t array
|
|
|
|
val loc_external_arguments: Reg.t array -> Reg.t array * int
|
|
|
|
val loc_external_results: Reg.t array -> Reg.t array
|
|
|
|
val loc_exn_bucket: Reg.t
|
|
|
|
|
1995-07-02 09:41:48 -07:00
|
|
|
(* Maximal register pressures for pre-spilling *)
|
1995-07-10 02:48:27 -07:00
|
|
|
val safe_register_pressure: Mach.operation -> int
|
|
|
|
val max_register_pressure: Mach.operation -> int array
|
1995-07-02 09:41:48 -07:00
|
|
|
|
1995-06-15 01:17:29 -07:00
|
|
|
(* Registers destroyed by operations *)
|
|
|
|
val destroyed_at_oper: Mach.instruction_desc -> Reg.t array
|
|
|
|
val destroyed_at_raise: Reg.t array
|
|
|
|
|
1995-07-07 09:14:06 -07:00
|
|
|
(* Info for laying out the stack frame *)
|
1995-06-15 01:17:29 -07:00
|
|
|
val num_stack_slots: int array
|
|
|
|
val contains_calls: bool ref
|
1995-07-02 09:41:48 -07:00
|
|
|
|
1996-11-07 02:55:02 -08:00
|
|
|
(* Calling the assembler *)
|
1995-07-02 09:41:48 -07:00
|
|
|
val assemble_file: string -> string -> int
|