合规国际互联网加速 OSASE为企业客户提供高速稳定SD-WAN国际加速解决方案。 广告
在Erlang模块被编译之前,首先会被名为epp的Erlang预处理器进行自动处理。这个预处理器会扩展任何存在于源文件中的宏,并且插入任何必需的包含文件。 通常,你无须关心预处理器的输出,但在一些特殊情况下(例如,你要调试一个有错误的宏),你可能希望能够保存预处理器的输出。通过命令compile:file(M,['p'])可以将预处理器的输出保存在一个文件中。这个命令编译M.erl文件中的所有代码,然后在M.P文件中产生一个列表,存放所有经过扩展的宏和所有已经插入的包含文件。 erlang的VM作为register based的VM, 大概有400条指令.指令分为hot, normal, cold 3大类别。beam_emu.c是vm的实现,hot和cold指令在编译的时候 由脚本生成的,include到beam_emu去的。 hot是热门的操作如list, tuple操作, cold的就是比较偏的指令。 erlc +"'S'" gram.erl 中间汇编码, 供transform进行处理和编译器进一步生成opcode. http://blog.yufeng.info/archives/34 erts_debug:df(eg). VM opcode形式, VM就是来解释运行这些code的 http://blog.yufeng.info/archives/498 1.erts_debug:df(Mod). %生成自解码,vm码 2.erts_debug:size(MyList). 3.erts_debug:flat_size(MyList).