diff options
Diffstat (limited to 'ia32')
-rw-r--r-- | ia32/CBuiltins.ml | 4 | ||||
-rw-r--r-- | ia32/TargetPrinter.ml | 5 |
2 files changed, 7 insertions, 2 deletions
diff --git a/ia32/CBuiltins.ml b/ia32/CBuiltins.ml index 765f5b18..b1be612b 100644 --- a/ia32/CBuiltins.ml +++ b/ia32/CBuiltins.ml @@ -70,3 +70,7 @@ let builtins = { let size_va_list = 4 let va_list_scalar = true + +(* Expand memory references inside extended asm statements. Used in C2C. *) + +let asm_mem_argument arg = Printf.sprintf "0(%s)" arg diff --git a/ia32/TargetPrinter.ml b/ia32/TargetPrinter.ml index 58b7aa37..7e9471a5 100644 --- a/ia32/TargetPrinter.ml +++ b/ia32/TargetPrinter.ml @@ -871,9 +871,10 @@ module Target(System: SYSTEM):TARGET = (Int32.to_int (camlint_of_coqint al)) args | EF_annot_val(txt, targ) -> print_annot_val oc (extern_atom txt) args res - | EF_inline_asm txt -> + | EF_inline_asm(txt, sg) -> fprintf oc "%s begin inline assembly\n" comment; - fprintf oc " %s\n" (extern_atom txt); + fprintf oc "\t"; + PrintAnnot.print_inline_asm preg oc (extern_atom txt) sg args res; fprintf oc "%s end inline assembly\n" comment | _ -> assert false |