Yul语言及对象说明——Solidity中文文档(9)

本文是Solidity文档的第九部分,主要介绍Yul语言,一种能编译到EVM 1.0、1.5及eWASM等后端的中间语言。Yul具有函数、代码块、变量等核心组件,支持多种数据类型,并强调强类型。此外,还介绍了Yul的语法限制、作用域规则、形式规范和类型转换。同时,文章提及Yul对象的说明,展示Yul代码块和对象的示例。
摘要由CSDN通过智能技术生成

image

写在前面:HiBlock区块链社区成立了翻译小组,翻译区块链相关的技术文档及资料,本文为Solidity文档翻译的第九部分《Yul语言及对象说明》,特发布出来邀请solidity爱好者、开发者做公开的审校,您可以添加微信baobaotalk_com,验证输入“solidity”,然后将您的意见和建议发送给我们,也可以在文末“留言”区留言,有效的建议我们会采纳及合并进下一版本,同时将送一份小礼物给您以示感谢。

Yul (先前被也被称为 JULIA 或 IULIA)是一种可以编译到各种不同后端的中间语言( 以太坊虚拟机Ethereum Virtual Machine(EVM) 1.0,以太坊虚拟机Ethereum Virtual Machine(EVM) 1.5,而 eWASM 也在计划中)。 正因为如此,它被设计成为这三种平台的可用的共同标准。 它已经可以用于 Solidity 内部的“内联汇编”,并且未来版本的 Solidity 编译器甚至会将 Yul 用作中间语言。 为 Yul 构建高级的优化器阶段也将会很容易。

image

Yul 的核心组件是函数,代码块,变量,字面量,for 循环,if 条件语句,switch 条件语句,表达式和变量赋值。

Yul 是强类型的,变量和字面量都需要通过前缀符号来指明类型。支持的类型有:bool, u8, s8, u32, s32, u64, s64, u128, s128, u256 和 s256。

Yul 本身甚至不提供操作符。如果目标平台是 以太坊虚拟机Ethereum Virtual Machine(EVM),则操作码将作为内置函数提供,但如果后端平台发生了变化,则可以重新实现它们。 有关强制性的内置函数的列表,请参阅下面的章节。

以下示例程序假定 以太坊虚拟机Ethereum Virtual Machine(EVM) 操作码 mul,div 和 mo 是原生支持或可以作为函数用以计算指数的。

{
   function power(base:u256, exponent:u256) -> result:u256
   {
       switch exponent
       case 0:u256 { result := 1:u256 }
       case 1:u256 { result := base }
       default:
       {
           result := power(mul(base, base), div(exponent, 2:u256))
           switch mod(exponent, 2:u256)
               case 1:u256 { result := mul(base, result) }
       }
   }

}

也可用 for 循环代替递归来实现相同的功能。这里,我们需要 以太坊虚拟机Ethereum Virtual Machine(EVM) 操作码 lt(小于)和 add 可用。

{
   function power(base:u256, exponent:u256) -> result:u256
   {
       result := 1:u256
       for { let i := 0:u256 } lt(i, exponent) { i := add(i, 1:u256) }
       {
           result := mul(result, base)
       }
   }

}

1

Yul语言说明

本章介绍 Yul 代码。Yul 代码通常放置在一个 Yul 对象中,它将在下一节中介绍。

语法:

代码块 = '{' 语句* '}'

语句 =
   代码块 |
   函数定义 |
   变量声明 |
   赋值 |
   表达式 |
   Switch |
   For 循环 |
   循环中断

函数定义 =
   'function' 标识符 '(' 带类型的标识符列表? ')'
   ( '->' 带类型的标识符列表 )? 代码块

变量声明 =
   'let' 带类型的标识符列表 ( ':=' 表达式 )?

赋值 =
   标识符列表 
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值