summaryrefslogtreecommitdiff
path: root/arm/PrintAsm.ml
diff options
context:
space:
mode:
authorGravatar xleroy <xleroy@fca1b0fc-160b-0410-b1d3-a4f43f01ea2e>2009-11-19 13:31:08 +0000
committerGravatar xleroy <xleroy@fca1b0fc-160b-0410-b1d3-a4f43f01ea2e>2009-11-19 13:31:08 +0000
commitcdf83055d96e2af784a97c783c94b83ba2032ae1 (patch)
tree908255b3dc26d69a27f55ae430fb6529934dde32 /arm/PrintAsm.ml
parentd0ed98b8fd61a88cf8e9514015a8f2419fd59575 (diff)
Added support for jump tables.
git-svn-id: https://yquem.inria.fr/compcert/svn/compcert/trunk@1181 fca1b0fc-160b-0410-b1d3-a4f43f01ea2e
Diffstat (limited to 'arm/PrintAsm.ml')
-rw-r--r--arm/PrintAsm.ml6
1 files changed, 6 insertions, 0 deletions
diff --git a/arm/PrintAsm.ml b/arm/PrintAsm.ml
index 9297a69..2239911 100644
--- a/arm/PrintAsm.ml
+++ b/arm/PrintAsm.ml
@@ -356,6 +356,12 @@ let print_instruction oc labels = function
let lbl = label_symbol id ofs in
fprintf oc " ldr %a, .L%d @ %a\n"
ireg r1 lbl print_symb_ofs (id, ofs); 1
+ | Pbtbl(r, tbl) ->
+ fprintf oc " ldr pc, [pc, %a]\n" ireg r;
+ fprintf oc " mov r0, r0\n"; (* no-op *)
+ List.iter
+ (fun l -> fprintf oc " .word %a\n" label (transl_label l));
+ 2 + List.length tbl
let no_fallthrough = function
| Pb _ -> true