Skip to content

Instantly share code, notes, and snippets.

@hamidreza-s
Last active August 11, 2017 14:17
Show Gist options
  • Save hamidreza-s/5ebbc909e6bb7514ac16 to your computer and use it in GitHub Desktop.
Save hamidreza-s/5ebbc909e6bb7514ac16 to your computer and use it in GitHub Desktop.
There are lots of intermediate code generating between Erlang source code and byte code. These steps are as follows.
* Erlang Source Code
* Scanning
* Parsing
* Parse Trasform
* Linter
* Erlang AST ('P')
* Erlang Expanded AST ('E')
* Core Erlang
* Core Erlang AST
* Kernel Erlang
* Byte Code / BEAM Code / Assember Code ('S')
Note: Using compile:file(module_name, [time]), we can see the detailed steps of compiling Erlang source code to byte code.
1> compile:file(foo, time).
Compiling foo
remove_file : 0.00 s 0.6 kB
parse_module : 0.00 s 1.3 kB
transform_module : 0.00 s 1.3 kB
lint_module : 0.00 s 1.3 kB
expand_module : 0.00 s 2.0 kB
core_module : 0.00 s 9.6 kB
core_fold_module : 0.00 s 4.9 kB
core_transforms : 0.00 s 4.9 kB
core_dsetel_module : 0.00 s 4.9 kB
kernel_module : 0.00 s 6.4 kB
v3_life : 0.00 s 4.9 kB
v3_codegen : 0.00 s 3.0 kB
beam_a : 0.00 s 2.7 kB
beam_block : 0.00 s 3.2 kB
beam_except : 0.00 s 3.2 kB
beam_bool : 0.00 s 3.2 kB
beam_type : 0.00 s 3.2 kB
beam_split : 0.00 s 3.1 kB
beam_dead : 0.00 s 3.2 kB
beam_jump : 0.00 s 3.2 kB
beam_peep : 0.00 s 3.2 kB
beam_clean : 0.00 s 3.2 kB
beam_bsm : 0.00 s 3.2 kB
beam_receive : 0.00 s 3.2 kB
beam_trim : 0.00 s 3.2 kB
beam_flatten : 0.00 s 2.7 kB
beam_z : 0.00 s 2.7 kB
beam_validator : 0.00 s 2.7 kB
beam_asm : 0.00 s 0.6 kB
save_binary : 0.00 s 0.6 kB
{ok,foo}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment