同様の SO-questionとerlang-documentationで述べられているように:
アセンブラ ファイルの形式は文書化されておらず、リリース間で変更される可能性があることに注意してください。このオプションは、主に内部デバッグ用です。
何が起こっているのか本当に知りたい場合は、ソースコードで追跡する必要があるようです。ほとんどの作業は erts/emulator/beam/beam_emu.c で行われます (私は otp_src_R15B02 を調べました):
call_ext
:継続ポインターを現在の命令 + 2に設定し、ディスパッチ/外部呼び出しを行います。call_ext_only
: CP には触れず、発送するだけです。(~1520行目)
- どちらもメモリを割り当てますが
allocate_zero
、初期化します0x00
(〜334行目)。
test_heap
: ヒープの Nh ワードが使用可能かどうかを確認します。そうでない場合は、ガベージ コレクションを実行します。(~390行目)
allocate(StackNeeded, NumberOfRegistersToPreserve)
(~316行目)
ファイル全体は#definesとgotosの複合であり、一部のマクロは同じフォルダー内の ops.tab 内で定義されています。私も erlang-asm の専門家ではないので、何か見落としているかもしれません。そのことを念頭に置いて、作業を開始する前に私のステートメントをクロスチェックしてください。
リンクされた SO-awnser から TamasNagy を引用するには:
これで何を達成しようとしているのかはわかりませんが、コア erlang はコード操作を行うためのより良いレベルかもしれません。
詳細については、そちらをご覧ください。Erlang には強みがありますが、ドキュメントはその 1 つではありません。
よろしく。