Ocaml的汇编代码

0xA*_*xAX 4 assembly ocaml disassembly

我有简单的ocaml文件test.ml

1 + 2;;
Run Code Online (Sandbox Code Playgroud)

我编译了它.我能看到这段代码的汇编输出吗?也许ocaml数据包有这个的任何工具?

谢谢.

Pas*_*uoq 9

是的你可以:见下文.代码中剩下的所有内容都是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
Run Code Online (Sandbox Code Playgroud)