summaryrefslogtreecommitdiffstats
path: root/asmcomp
diff options
context:
space:
mode:
authorAlain Frisch <alain@frisch.fr>2014-09-23 13:27:33 +0000
committerAlain Frisch <alain@frisch.fr>2014-09-23 13:27:33 +0000
commit37c50a06f1f1178b9d11710319cfc50bdedaa146 (patch)
tree51cef62551ab4c193a488d0fe65f30d635f8c77f /asmcomp
parenta8b637fb542d3124c25127df56f0b2a2380d2da8 (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.mli2
-rw-r--r--asmcomp/intel_dsl.ml11
-rw-r--r--asmcomp/intel_gas.ml10
-rw-r--r--asmcomp/intel_masm.ml8
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