aboutsummaryrefslogtreecommitdiffstats
path: root/powerpc/AsmToJSON.ml
diff options
context:
space:
mode:
authorBernhard Schommer <bernhardschommer@gmail.com>2016-01-25 10:03:11 +0100
committerBernhard Schommer <bernhardschommer@gmail.com>2016-01-25 10:03:11 +0100
commit4467453e0edca993c175690b7141d4916af3dc19 (patch)
tree15bd43200c36a5bc5d57c87a3e1220e378df07aa /powerpc/AsmToJSON.ml
parent507f000343636e1e300b1f3af71177726926292c (diff)
downloadcompcert-kvx-4467453e0edca993c175690b7141d4916af3dc19.tar.gz
compcert-kvx-4467453e0edca993c175690b7141d4916af3dc19.zip
Started implementing a printer for Clflags.
Diffstat (limited to 'powerpc/AsmToJSON.ml')
-rw-r--r--powerpc/AsmToJSON.ml17
1 files changed, 5 insertions, 12 deletions
diff --git a/powerpc/AsmToJSON.ml b/powerpc/AsmToJSON.ml
index 42ad4f97..4ca7dbde 100644
--- a/powerpc/AsmToJSON.ml
+++ b/powerpc/AsmToJSON.ml
@@ -17,11 +17,10 @@ open AST
open BinNums
open C2C
open Camlcoq
+open Json
open Printf
open Sections
-let p_jstring oc s = fprintf oc "\"%s\"" s
-
let p_ireg oc = function
| GPR0 -> fprintf oc "{\"Register\":\"r0\"}"
| GPR1 -> fprintf oc "{\"Register\":\"r1\"}"
@@ -129,12 +128,6 @@ let p_crbit oc c =
let p_label oc l = fprintf oc "{\"Label\":%ld}" (P.to_int32 l)
-let p_list elem oc l =
- match l with
- | [] -> fprintf oc "[]"
- | hd::tail ->
- output_string oc "["; elem oc hd;List.iter (fprintf oc ",%a" elem) tail;output_string oc "]"
-
type instruction_arg =
| Ireg of ireg
| Freg of freg
@@ -156,7 +149,7 @@ let p_arg oc = function
| Atom a -> p_atom_constant oc a
let p_instruction oc ic =
- let p_args oc l= fprintf oc "%a:%a" p_jstring "Args" (p_list p_arg) l
+ let p_args oc l= fprintf oc "%a:%a" p_jstring "Args" (p_jarray p_arg) l
and inst_name oc s = fprintf oc"%a:%a" p_jstring "Instruction Name" p_jstring s in
let first = ref true in
let sep oc = if !first then first := false else output_string oc ", " in
@@ -385,7 +378,7 @@ let p_vardef oc (name,v) =
fprintf oc "{\"Var Name\":%a,\"Var Readonly\":%B,\"Var Volatile\":%B,\n\"Var Storage Class\":%a,\n\"Var Alignment\":%a,\n\"Var Section\":%a,\n\"Var Init\":%a}\n"
p_atom name v.gvar_readonly v.gvar_volatile
p_storage static p_int_opt alignment p_section section
- (p_list p_init_data) v.gvar_init
+ (p_jarray p_init_data) v.gvar_init
let p_program oc prog =
let prog_vars,prog_funs = List.fold_left (fun (vars,funs) (ident,def) ->
@@ -394,5 +387,5 @@ let p_program oc prog =
| Gvar v -> (ident,v)::vars,funs
| _ -> vars,funs) ([],[]) prog.prog_defs in
fprintf oc "{\"Global Variables\":%a,\n\"Functions\":%a}"
- (p_list p_vardef) prog_vars
- (p_list p_fundef) prog_funs
+ (p_jarray p_vardef) prog_vars
+ (p_jarray p_fundef) prog_funs