erlang 中间码
来源:互联网 发布:淘宝 css 布局框架 编辑:程序博客网 时间:2024/05/01 19:25
erlang 中间码
1. core中间码的形成
对于文件test.erl, 可以在编译的时候,加to_core 参数
c(test, [to_core]).
2. 其他中间码的形成
参考: erlang虚拟机代码执行原理
3. 应用
今天在看代码的时候发现一个写法
-module(test).-export([test/0]).test() -> Hello = lists:concat(["he", "llo"]), World = lists:concat(["wo", "rld"]), case Hello =/= "hello" orelse World of "world" -> true; _ -> false end.
执行
1> c(test).{ok,test}2> test:test().true
也就是说如果”短路或”的前面一个表达式的值是false,那么结果将会是后面一个表达式的值。还是蛮奇怪的,之前一直以为这是一个错误的表达式。。
为了看下虚拟机怎么处理这个问题, 学了下erlang core code 的生成。
就是c(test, [to_core]).
,可以将test.erl -> test.core
test.core 截取如下
module 'test' ['module_info'/0, 'module_info'/1, 'test'/0] attributes []'test'/0 = %% Line 4 fun () -> let <Hello> = call %% Line 5 'lists':%% Line 5 'concat' (%% Line 5 [[104|[101]]|[[108|[108|[111]]]]]) in let <World> = call %% Line 6 'lists':%% Line 6 'concat' (%% Line 6 [[119|[111]]|[[114|[108|[100]]]]]) in let <_cor4> = case <> of %% Line 7 ( <> when call 'erlang':'=/=' (Hello, [104|[101|[108|[108|[111]]]]]) -> 'true' -| ['compiler_generated'] ) %% Line 7 ( <> when 'true' -> World -| ['compiler_generated'] ) end in %% Line 7 case _cor4 of %% Line 8 <[119|[111|[114|[108|[100]]]]]> when 'true' -> %% Line 9 'true' %% Line 10 <_cor6> when 'true' -> %% Line 11 'false' end'module_info'/0 = fun () -> call 'erlang':'get_module_info' ('test')'module_info'/1 = fun (_cor0) -> call 'erlang':'get_module_info' ('test', _cor0)end
可以看出<_cor4> 的赋值, 如果前一个表达式不成立的时候,就直接返回World的值。
参考:
- 坚强2002 Know a little Core Erlang
- erlang虚拟机代码执行原理
阅读全文
0 0
- erlang 中间码
- Core Erlang:Erlang的Core中间表示
- Erlang
- Erlang
- Erlang
- erlang
- Erlang
- erlang
- erlang
- erlang
- erlang
- erlang
- erlang
- Erlang生成图片验证码
- PHP编译器及其性能评估 - 中间码
- PHP编译器及其性能评估 - 中间码
- PHP编译器及其性能评估 - 中间码
- Erlang代码反编译以及查看汇编码
- Python创建第一个Django框架的Web项目
- 从源码角度分析postDelayed原理
- 谷歌推广AutoML:机器学习帮助人类解决人才空缺
- openssl AES c
- sql 批处理
- erlang 中间码
- 欧拉筛素数(顺便求欧拉函数)模板
- nginx教程
- Laravel 数据库操作基础知识总结
- SSH_两张表级联(CRUD)增删查改实例
- 5.5
- 窄带,宽带,频率选择性衰落,时间选择性衰落,相干带宽,以及大尺度衰落和小尺度衰落的定义
- 1.2微信小程序的目录结构介绍
- Using Python