Код сборки от Ocaml - PullRequest
       28

Код сборки от Ocaml

4 голосов
/ 23 июля 2011

У меня есть простой файл ocaml test.ml

1 + 2;;

Я скомпилировал это. Могу ли я увидеть вывод сборки этого кода? Может, у пакета ocaml есть какие-нибудь инструменты для этого?

Спасибо.

1 Ответ

9 голосов
/ 23 июля 2011

Да, вы можете: см. Ниже.Все, что осталось от вашего кода, это 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
...