diff options
author | Alain Frisch <alain@frisch.fr> | 2014-09-23 13:27:33 +0000 |
---|---|---|
committer | Alain Frisch <alain@frisch.fr> | 2014-09-23 13:27:33 +0000 |
commit | 37c50a06f1f1178b9d11710319cfc50bdedaa146 (patch) | |
tree | 51cef62551ab4c193a488d0fe65f30d635f8c77f /asmcomp | |
parent | a8b637fb542d3124c25127df56f0b2a2380d2da8 (diff) |
displ can be represented as an int.
git-svn-id: http://caml.inria.fr/svn/ocaml/branches/abstract_intel_emit@15311 f963ae5c-01c2-4b8c-9fe0-0dff7051ff02
Diffstat (limited to 'asmcomp')
-rw-r--r-- | asmcomp/intel_ast.mli | 2 | ||||
-rw-r--r-- | asmcomp/intel_dsl.ml | 11 | ||||
-rw-r--r-- | asmcomp/intel_gas.ml | 10 | ||||
-rw-r--r-- | asmcomp/intel_masm.ml | 8 |
4 files changed, 15 insertions, 16 deletions
diff --git a/asmcomp/intel_ast.mli b/asmcomp/intel_ast.mli index 293039569..230dc1830 100644 --- a/asmcomp/intel_ast.mli +++ b/asmcomp/intel_ast.mli @@ -71,7 +71,7 @@ type 'reg addr = scale: int; base: 'reg option; sym: string option; - displ: int64; + displ: int; } (** Addressing modes: displ + sym + base + idx * scale diff --git a/asmcomp/intel_dsl.ml b/asmcomp/intel_dsl.ml index 5e9cc7d4d..bd9a862f8 100644 --- a/asmcomp/intel_dsl.ml +++ b/asmcomp/intel_dsl.ml @@ -222,13 +222,12 @@ module DSL32 = struct let st0 = Regf (ST 0) let st1 = Regf (ST 1) - let mem_ptr typ ?(scale = 1) ?base ?sym offset idx = + let mem_ptr typ ?(scale = 1) ?base ?sym displ idx = assert(scale > 0); - Mem32 {typ; idx; scale; base; sym; displ=Int64.of_int offset} + Mem32 {typ; idx; scale; base; sym; displ} let mem_sym typ ?(ofs = 0) l = - Mem32 {typ; idx=EAX; scale=0; base=None; - sym=Some l; displ=Int64.of_int ofs} + Mem32 {typ; idx=EAX; scale=0; base=None; sym=Some l; displ=ofs} end @@ -309,8 +308,8 @@ module DSL64 = struct let mem_ptr typ ?(scale = 1) ?base offset idx = assert(scale > 0); - Mem64 {typ; idx; scale; base; sym=None; displ=Int64.of_int offset} + Mem64 {typ; idx; scale; base; sym=None; displ=offset} let from_rip typ ?(ofs = 0) s = - Mem64 {typ; idx=RIP; scale=1; base=None; sym=Some s; displ=Int64.of_int ofs} + Mem64 {typ; idx=RIP; scale=1; base=None; sym=Some s; displ=ofs} end diff --git a/asmcomp/intel_gas.ml b/asmcomp/intel_gas.ml index 787d1cdec..130e3bdbd 100644 --- a/asmcomp/intel_gas.ml +++ b/asmcomp/intel_gas.ml @@ -53,13 +53,13 @@ let print_reg b f r = let bprint_arg_mem b string_of_register {typ=_; idx; scale; base; sym; displ} = begin match sym with | None -> - if displ <> 0L || scale = 0 then - Buffer.add_string b (Int64.to_string displ) + if displ <> 0 || scale = 0 then + Buffer.add_string b (string_of_int displ) | Some s -> Buffer.add_string b s; - if displ = 0L then () - else if displ > 0L then bprintf b "+%Ld" displ - else bprintf b "%Ld" displ + if displ = 0 then () + else if displ > 0 then bprintf b "+%d" displ + else bprintf b "%d" displ end; if scale <> 0 then begin Buffer.add_char b '('; diff --git a/asmcomp/intel_masm.ml b/asmcomp/intel_masm.ml index 75ea06de2..624af888f 100644 --- a/asmcomp/intel_masm.ml +++ b/asmcomp/intel_masm.ml @@ -66,8 +66,8 @@ let bprint_arg_mem b string_of_register {typ; idx; scale; base; sym; displ} = Buffer.add_char b '+'; Buffer.add_string b (string_of_register r); end; - begin if displ > 0L then bprintf b "+%Ld" displ - else if displ < 0L then bprintf b "%Ld" displ + begin if displ > 0 then bprintf b "+%d" displ + else if displ < 0 then bprintf b "%d" displ end; Buffer.add_char b ']' @@ -90,8 +90,8 @@ let bprint_arg b arg = MASM will automatically use RIP addressing when needed. *) | Mem64 {typ; idx=RIP; scale=1; base=None; sym=Some s; displ} -> bprintf b "%s%s" (string_of_datatype_ptr typ) s; - if displ > 0L then bprintf b "+%Ld" displ - else if displ < 0L then bprintf b "%Ld" displ + if displ > 0 then bprintf b "+%d" displ + else if displ < 0 then bprintf b "%d" displ | Mem32 addr -> bprint_arg_mem b string_of_register32 addr | Mem64 addr -> bprint_arg_mem b string_of_register64 addr |