我有简单的ocaml文件test.ml
1 + 2;;
我编译了它。我可以看到此代码的汇编输出吗?也许ocaml packet有任何工具可以这样做?
谢谢。
最佳答案
是的,您可以:请参阅下文。代码中剩下的所有内容都是movl $7, %eax
(7是OCaml的3表示,这是1 + 2的结果)。
$ cat > t.ml
1 + 2 ;;
$ ocamlopt -S t.ml
$ cat t.s
.data
.globl _camlT__data_begin
_camlT__data_begin:
.text
.globl _camlT__code_begin
_camlT__code_begin:
nop
.data
.long 0
.globl _camlT
_camlT:
.text
.align 4
.globl _camlT__entry
_camlT__entry:
subl $12, %esp
L100:
movl $7, %eax
movl $1, %eax
addl $12, %esp
ret
.data
.text
nop
.globl _camlT__code_end
_camlT__code_end:
.data
.globl _camlT__data_end
_camlT__data_end:
.long 0
.globl _camlT__frametable
_camlT__frametable:
.long 0
.section __IMPORT,__pointers,non_lazy_symbol_pointers
.section __IMPORT,__jump_table,symbol_stubs,self_modifying_code+pure_instructions,5