来自 Ocaml 的汇编代码

发布于 2024-11-25 16:26:08 字数 131 浏览 1 评论 0原文

我有简单的 ocaml 文件 test.ml

1 + 2;;

我编译了它。我可以看到这段代码的汇编输出吗?也许 ocaml packet 有这方面的工具吗?

谢谢。

I have simple ocaml file test.ml

1 + 2;;

I compiled it. can i see assembly output of this code? Maybe ocaml packet has any tools for this?

Thank you.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

栖竹 2024-12-02 16:26:08

是的,您可以:见下文。代码中剩下的所有内容都是 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

Yes you can: see below. Everything that remains from your code is movl $7, %eax (7 is OCaml's representation for 3, which is the result of 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
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文