Erlang bytecode

[url]http://mryufeng.iteye.com[/url]

yufeng在一篇文章中提到可以从erlang源码生成中间码,下来想想对理解VM的机制是大有帮助的,记一下,在此,对yufeng在Erlang方面的丰功伟绩表示感谢 :idea: 。


-module(tut1).
-export([fac/1]).

fac(0) -> 1;
fac(N) -> N * fac(N-1).


erlc +"'S'" tut1.erl


{module, tut1}. %% version = 0

{exports, [{fac,1},{module_info,0},{module_info,1}]}.

{attributes, []}.

{labels, 8}.


{function, fac, 1, 2}.
{label,1}.
{func_info,{atom,tut1},{atom,fac},1}.
{label,2}.
{test,is_eq_exact,{f,3},[{x,0},{integer,0}]}.
{move,{integer,1},{x,0}}.
return.
{label,3}.
{allocate_zero,1,1}.
{gc_bif,'-',{f,0},1,[{x,0},{integer,1}],{x,1}}.
{move,{x,0},{y,0}}.
{move,{x,1},{x,0}}.
{call,1,{f,2}}.
{gc_bif,'*',{f,0},1,[{y,0},{x,0}],{x,0}}.
{deallocate,1}.
return.


{function, module_info, 0, 5}.
{label,4}.
{func_info,{atom,tut1},{atom,module_info},0}.
{label,5}.
{move,{atom,tut1},{x,0}}.
{call_ext_only,1,{extfunc,erlang,get_module_info,1}}.


{function, module_info, 1, 7}.
{label,6}.
{func_info,{atom,tut1},{atom,module_info},1}.
{label,7}.
{move,{x,0},{x,1}}.
{move,{atom,tut1},{x,0}}.
{call_ext_only,2,{extfunc,erlang,get_module_info,2}}.

【信息科学与工程学】计算机科学与自动化 第二百三十三篇 凤凰架构01 编号类型领域系统软件/硬件或系统集成方案及系统架构模块子模块函数名称/算法名称算法的数学分析及计算机体系架构及数据结构与算法详细设计及参数列表及数值范围设计关联知识1共识算法分布式基石状态机复制架构:Proposer/Acceptor/Learner 多节点角色模型,基于操作转移(Operation Transfer)分布式共识PaxosPaxos 协议(Prepare/Promise/Accept/Accepted 两阶段)数学基础:多数派(Quorum)投票,基于鸽巢原理保证 W+R>N 时读写集合必有 阅读详情

相关推荐

Erlang二进制与位语法

Erlang的位语法(Erlang Bit Syntax)提供了一种方法来表示和匹配二进制数据,这使得Erlang二进制对象在某种程度上等同于其他Erlang对象,如元组和列表。也因为其快速高效,使得在Erlang中,二进制对象被广泛使用,尤其是在协议编程方面。

Nicer_feng's blog 520

Erlang动态编译加载模块

ejabberd最新的版本有个模块叫做 dynamic_compile, 支持从string动态加载一个模块。有了这个功能我们就可以很方便的动态生成一个模块,加入到我们的运行期。我想的有以下几个功能: 1. const 模块 2. 如日志系统的级别: log(S) when 0 > 1 -> do_log(S); log(_)-> skip. 这样的模块...

erlang非业余研究 421

OCS2 移动机械臂深度解析:ocs2_mobile_manipulator 与 ocs2_mobile_manipulator_ros 源码全拆解

摘要:本文深入解析OCS2移动机械臂MPC控制框架的两个核心工具包。ocs2_mobile_manipulator负责算法建模,通过MobileManipulatorInterface统一构建最优控制问题,支持4种机械臂模型并实现自动维度推导;ocs2_mobile_manipulator_ros负责ROS集成,包含MPC求解、虚拟跟踪等4个核心节点。文章详细剖析了工具包分工、最优控制建模架构(含动力学、代价约束设计)、ROS运行管线、参数配置映射,并提供了高效的源码阅读顺序建议,帮助开发者快速掌握移动机械

m0_73309445的博客 656

Erlang到底好在哪里 -- 聊聊我使用Erlang的经历与感受

http://www.imgeek.org/question/136 08年开始接触Erlang,组里正好来了一位Erlang专家--余峰同学http://blog.yufeng.info/(现在**担任核心系统资深技术专家,花名褚霸),在霸爷的大力传教下,我立即就被Erlang的强大与优美迷住了。当时我正在为实现一个分布式语音服务集群头痛,开发语言是C++,在需要跨界研究语音处理、语音传输

$firecat利白的代码足迹$ 1万+

本地AI代码助手:智能解析大型代码库,实现自动化重构与理解

在软件开发中,大型代码库的理解与维护是常见挑战。传统方法依赖人工阅读和有限上下文工具,效率低下。通过结合检索增强生成(RAG)和多智能体(Multi-Agent)架构,现代AI工具能够智能解析代码结构,理解模块关系,并精准定位相关代码片段。这种技术不仅能提升代码探索效率,还能自动化执行重构、文档生成等任务,在遗留系统维护、快速上手新项目等场景中发挥关键作用。本文以blackboxaicode/cli为例,展示了如何利用其代码感知和Workflow Automation能力,高效处理复杂代码库。

weixin_30240349的博客 372

车载测试工程师必备:5分钟搞定CANoe台架搭建(附DBC导入技巧)

本文为车载测试工程师提供快速搭建CANoe测试台架的实用指南,涵盖硬件连接、DBC文件导入及常见报错解决方案。通过详细步骤和高效技巧,帮助工程师在5分钟内完成台架搭建,提升车载测试效率,特别适合紧急功能验证场景。

potato的博客 815

yufeng.info终于回来了

三个月前yufeng.info突然访问不了,但是在境外可以访问,莫名其妙的被禁了。后来ecug也被禁,才知道是没有向有关部分备案!唉,咋这么难呢,我招惹谁了!...

erlang非业余研究 193

如何用 OBProxy 实现 OceanBase 的最佳路由策略

本文基于业务中一类常见的路由问题展开,对OceanBase的路由功能及对应配置项做详细介绍,指导用户在业务实践中如何正确的配置路由策略及快速排查路由问题

OceanBase分布式数据库的博客 1695

Erlang分布的核心技术浅析

Erlang系统在我看来有3个特性 1. 分布 2. 多核心支持 3. fp。 这这3个特性中分布我认为是erlang最强大的,从第一个版本就支持到现在,相对非常成熟,而多核心支持是这几年才加进去的。 erlang的分布系统做到了2点 1.节点的位置无关性。 2. 对用户分布式透明的。具体体现就是node是靠名字识别的, 进程也是靠pid来识别。 分布系统就要实现节点间通讯,erlan...

erlang非业余研究 522

H3C交换机命令大全,分模块好记忆!

在深入命令之前,我们先来了解H3C交换机的命令行基础。<H3C>[H3C]常用基础命令如下:这些基础命令是操作H3C交换机的敲门砖,熟练掌握后,我们将按模块深入探讨更具体的配置命令。H3C交换机的命令可以按功能模块分类,包括系统管理、接口配置、VLAN操作、链路聚合、路由配置、安全管理等。

网络技术联盟站 784

【WRF-Chem教程-附录B】使用 MOZART 与WRF-Chem

使用MOZART与WRF-Chem

WW、forever的博客 242

erlang实现字节数组反转和bit位反转

erlang实现字节数组反转和bit位反转

Fabuler的专栏 439

基于LED可见光通信的物联网系统设计_344

随着物联网技术的不断发展,传统无线通信在工业环境中面临电磁干扰强、通信质量不稳定等问题。为此,本文设计了一种基于LED可见光通信的物联网系统,实现工厂车间内设备状态的稳定、高效、低干扰数据传输。系统主要由设备节点、设备主机、华为云物联网服务器以及可视化上位机构成。 设备节点采集机器的出货量、运行状态、机身温度等关键信息,通过调制后的LED可见光信号发送至设备主机。主机利用红外接收器接收光信号后进行解调处理,并通过WIFI模块将数据上传至华为云IOT服务器。

347

解析Erlang日志组件lager的lager_transform模块

为什么80%的码农都做不了架构师?>>> ...

weixin_34179762的博客 656

VS2019编译配置Easy3D

VS2019编译配置Easy3D

dayuhaitang1的博客 2602

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

Erlang JAM二三话

转载请注明,来自:http://blog.youkuaiyun.com/skyman_2001 JAM即Joe's Abstract Machine.下面是摘录自http://www.erlang.org/faq/academic.html的关于JAM的说明: First I designed an abstract machine to execute Erlang. This was called...

云计算? 112

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

谈谈协程

为什么80%的码农都做不了架构师?>>> ...

weixin_33878457的博客 186

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

编程语言性能深度解析:从原理到场景的实战选型指南

编程语言的性能优化是软件工程中的核心议题,其本质涉及计算机系统底层原理与工程实践的平衡。从技术原理层面看,性能差异主要源于编译模型(如AOT编译、JIT编译)、内存管理机制(如垃圾回收、手动管理)以及并发模型(如协程、事件循环)的不同设计。这些底层机制直接决定了程序在计算密集型任务、I/O吞吐量以及资源利用率等方面的表现,进而影响系统的可扩展性与响应能力。在工程实践中,高性能并非孤立追求绝对速度,而是需要结合具体应用场景进行权衡。例如,高并发后端服务更关注协程和事件循环带来的吞吐量提升,而科学计算则依赖本地

weixin_33978044的博客 336

无涯教程-Erlang - byte_size函数

此方法返回 Bitstring 中包含的字节数。

无涯教程 536

erlang 二进制与位语法(bit syntax)

Erlang的位语法(Erlang Bit Syntax)提供了一种方法来表示和匹配二进制数据,这使得Erlang二进制对象在某种程度上等同于其他Erlang对象,如元组和列表。也因为其快速高效,使得在Erlang中,二进制对象被广泛使用,尤其是在协议编程方面。(官方文档) 位语法/比特语法(bit syntax) Erlang的位语法表达式,即Erlang二进制的表示形式: &lt;&lt;...

ve12345的博客 538

Erlang 的 数据类型

整数 进制表示16#cafe % 十六进制 32#sugar % 三十二进制 浮点数 X = 3.0.

wwwmewww的专栏 1463

erlang 各种数据类型占用的内存大小

用erlang的话讲,深入了解erlang不同数据类型所占的内存空间大小,是erlang高效编程的一个良好开始。 一个程序要运行,就要先描述其算法。描述一个算法应先说明算法中要用的数据,数据以变量或常量的形式来描述。每个变量或常量都有数据类型。 很多人都以为要把算法写得多精湛,才算高效编程,其实不然,细微处见功夫。 以下内容展示了erlang各种数据类型占用的内存大小。 Da...

白雾霾 416

Erlang词法分析器、语法分析器(lexer-leex,yac-yecc)

一、简介一门编程语言的编译器或者解释器通常功能分解为两步: 1、读取源码文件然后分析它的结构 2、处理这些结构,例如生成目标程序lexer和yacc就是能完成第一步以便生成程序段的工具。而第一步的任务又能分为两个子任务: 1、分割源码文件内容为很多tokens(lexer) 2、分析出程序的分级结构(yacc)二、lexer(词法分析工具) lexer的源就是一个正则表达式表,其正则规则符合目标程...

lkness的博客 2140

erlang的base64解码问题

在收到客户端的数字签名signature后,需要对signature做base64的解码。代码如下所示: 1 validate(SignedRequest) -> 2 RequestParts = string:split(SignedRequest, "."),%% 数字签名+'.'+algorithm, player_id等信息 3 Part1Or...

weixin_33721344的博客 288

Erlang Abstract Syntax Tree和汇编字节码

一、抽象语法树简介 抽象语法树(Abstract Syntax Tree)是源代码的抽象语法结构的树状表示。 抽象语法树是解析器(parser)的产物,解析器广义来说输入一般是程序的源码,输出一般是语法树(syntax tree,也叫parse tree等)或抽象语法树。进一步剥开来,广义的解析器里一般会有扫描器(scanner,也叫tokenizer或者lexical analyzer,词法分析...

lkness的博客 1115

实例分析Erlang的汇编指令

《Erlang虚拟机(VM)简介》一文中介绍的寄存器和指令参数类型是学习Erlang VM相关知识的基础,也是理解本文内容的前提,这里就不赘述了。 先看将要分析的实例的Erlang源代码:%% mytest.erl -module(mytest). -compile(export_all). %% 返回atom t1() -&gt; ok. %% 调用BIF t2(A) -&gt;...

844604778 314
上一篇: Erlang的基准测试
下一篇: Erlang中的各类文件
kernel121
博客等级 码龄16年 1粉丝 28原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值