Ответ 1
Как указано в подобном SO-вопросе и документация erlang
Обратите внимание, что формат файлов ассемблера не документирован и может меняться между выпусками - этот параметр предназначен, прежде всего, для внутренней отладки.
Если вы действительно хотите знать, что происходит, кажется, вам нужно отследить его в исходном коде. Большая часть работы выполняется в 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 и, возможно, что-то пропустил. Помните об этом и перепроверьте мои заявления, прежде чем приступить к работе с ними.
Чтобы процитировать TamasNagy от связанного SO-awnser:
Я не уверен, что вы пытаетесь достичь с этим, но основной erlang может быть лучшим уровнем для обработки кода.
Пожалуйста, посмотрите там дополнительную информацию. У Erlang есть свои сильные стороны, но документация не является одним из них.
С уважением.