erlang源码分析
来源:互联网 发布:电信运营商大数据应用 编辑:程序博客网 时间:2024/04/25 20:20
参考网址
http://www.cs-lab.org/historical_beam_instruction_set.html
http://erlangonxen.org/more/beam
http://www.cnblogs.com/me-sa/p/erlang_notes_129.html
一、寄存器
The BEAM Virtual Machine uses the following registers:
HTOP - top-of-heap pointer
E - top-of-stack pointer
CP - return-address pointer (where to go when a function is ready executed)
I - next-instruction pointer
x(N) - argument registers (to pass function parameters), x(N) are also used to hold temporal variables
y(N) - local variables (y(N) are not real registers, they reside in a local frame and are accessed by integer offset from a top-of-stack pointer)
fcalls - number of reductions done (to check for suspension while doing function call)
在这种格式中的opcode_value小于255的占用一个字节,大于255的将占用两个字节。
字节码语法图形式比较复杂,操作数按他们的类型大致可以分为以下几种:
8-bit long
- magic number
- function arity
- type of arithmetic
- type of operand
- type of bif
- sign of bignumber value
16-bit long
- atom length
- float length
- code length
- register number
- frame size
- heap requirement
24-bit long
- relative address
32-bit long
- integer value
- code size
- tuple arity
- tuple index
- string length
- bignum arity
- bignum value
除此之外,其它的操作数都是16位长。
然后字节码文件不能被直接执行,需要由erlang虚拟机解释执行。Erlang虚拟机加载字节码文件后会将字节码映射成虚拟机能识别的指令集,虚拟机指令集是使用C代码来定义的,称为threaded-code。其格式如下:
- ERLANG OTP源码分析
- erlang源码分析
- erlang gen_fsm源码分析
- erlang gen_server 源码分析 1
- Erlang:RabbitMQ源码分析 1. 启动过程
- erlang游戏源码--英雄远征分析
- Erlang OTP源码分析 – gen_server
- Erlang:RabbitMQ源码分析 3. supervisor和supervisor2深入分析
- Erlang:RabbitMQ源码分析 4. file_handle_cache实现分析
- Erlang:RabbitMQ源码分析 5. worker pool 实现分析
- 【erlang学习 】开源nosql kai 的源码分析
- Erlang:RabbitMQ源码分析 2. gen_server和gen_server2 深入剖析
- Distel 读Erlang源码
- Erlang源码汇编格式
- erlang 源码安装
- erlang源码参考
- erlang dict源码解析
- Erlang otp 源码结构
- FLEX 网格布局及响应式处理
- jquery.validate ie8 验证提交问题
- 表中有A B C三列,用SQL语句实现:当A列大于B列时选择A列否则选择B列,当B列大于C列时选择B列否则选择C列。
- Android Studio 设置内存大小及原理
- 485总线死锁与复位
- erlang源码分析
- iOS,由于图片原因导致tabbar图片点击发生zoom的现象
- Linux系统服务及其配置
- 初学LESS
- android 图片圆角处理
- web.xml的一些个配置
- git切换远程分支
- Dubbo架构设计详解
- app bootstrap font icon