- 浏览: 762838 次
- 性别:
- 来自: 深圳
文章分类
- 全部博客 (1045)
- 数据结构 (36)
- UML与设计模式 (42)
- c++ (87)
- rust (36)
- Qt (41)
- boost模板元编程 (43)
- Linux (77)
- 汇编 (4)
- 其它 (2)
- 烹饪 (3)
- unix c / socket (73)
- 软件工程 (4)
- shell (53)
- Python (37)
- c++ primer 5th(c++11) (22)
- 数据库/MySQL (27)
- 数据存储 (4)
- lisp (7)
- git (4)
- Utility (3)
- CDN与DNS (54)
- Http (53)
- php (7)
- nginx/lua/openresty (41)
- redis (11)
- TCP/IP (16)
- 互联网 (6)
- kernel (2)
- go (34)
- 区块链 (43)
- 比特股 (13)
- 以太坊 (23)
- 比特币 (23)
- 密码学 (10)
- EOS (53)
- DAG (1)
- docker (1)
- filecoin (7)
- solidity (65)
- ipfs (8)
- 零知识证明 (1)
- openzeppelin (3)
- java (1)
- defi (7)
- Ton (0)
最新评论
let:在汇编代码块中定义的变量,在该代码块 外部是无法访问的
1.创建一个新的堆栈槽位
2.为变量保留该槽位
3.当到达代码块结束时自动销毁该槽位
1.创建一个新的堆栈槽位
2.为变量保留该槽位
3.当到达代码块结束时自动销毁该槽位
// SPDX-License-Identifier: GPL-3.0 pragma solidity >=0.6.0 <0.9.0; import "hardhat/console.sol"; contract Assembly1 { constructor(){ } function fun() public { uint256 a = 0; assembly { a := 2 } console.log("a:",a); } function fun1(uint256 x,uint256 y) external view returns (uint256){ uint256 result = 0; assembly { result := add(x, y) // x + y mstore(0x0, result) // 在内存中保存结果 //return(0x0, 32) // 从内存中返回32字节 } console.log("fun1 result:",result); assembly { return (0x0,32) } } function fun2() external { uint256 x=0; uint256 y=0; uint256 z=0; uint256 n=0; string memory s = "a"; assembly { x := 7 y := add(x, 3) z := add(keccak256(0x0, 0x20), div(64, 32)) z := add(0x0, 0x20) let m // 自动初始化为 m = 0 } //console.log("x:%d,y:%d,z:%d,aaa:%s",x,y,z,s); console.logString(s); console.log("x:%d,y:%d,s:%s",x,y,s); } }
const { expect } = require("chai"); const { ethers } = require("hardhat"); constractName = "Assembly1"; describe("contract", function () { it("test", async function () { const TestContract = await ethers.getContractFactory(constractName); const testContract = await TestContract.deploy(); result = await testContract.fun(); result = await testContract.fun1(1,2); console.log("result",result.toString()); result = await testContract.fun2(); }); }); contract a: 2 fun1 result: 3 result 3 a x:7,y:10,s:a
发表评论
-
TypeError:ethers_1.getAddress
2024-04-29 10:45 246package.json 添加:"@nomicfou ... -
solidity
2023-02-25 14:23 12一.solidity 1.EVM 不是基于寄存器的,而是基于栈 ... -
solidity
2023-02-25 14:23 11一.solidity 1.EVM 不是基于寄存器的,而是基于栈 ... -
solidity
2023-02-25 14:23 248一.solidity 1.EVM 不是基于寄存器的,而是基于栈 ... -
Address
2023-02-23 10:54 5// contracts/Box.sol // SPDX ... -
Address
2023-02-23 10:50 211// contracts/Box.sol // SPDX ... -
Beacon
2023-02-20 11:45 223Beacon a.Implementation地址并不存放在P ... -
UUPS
2023-02-17 16:16 255a.Proxy直接把所有的请求都通过delegatecall丢 ... -
Transparent
2023-02-16 15:44 207Transparent: a.如果Proxy合约发现自己被Pr ... -
string转bytes
2023-02-16 11:04 280const data = Buffer.from(''); ... -
hardhat命令
2023-02-13 09:58 3351.前置准备,运行一个新项目 mkdir my-project ... -
multicall
2023-01-31 20:11 200multicall的solidity调用与ethers.js调 ... -
检查是否是721
2023-01-31 15:18 155// SPDX-License-Identifier: M ... -
EVM操作码
2023-01-25 10:33 2962.栈和内存操作码 2.1 POP:取出栈顶元素 2.2 PU ... -
计算合约地址
2023-01-19 11:27 243EVM会根据发送者地址和nonce经过RLP编码后再进行kec ... -
标准修饰符
2023-01-18 17:03 1561.internal:类似c++中的protected,通过J ... -
ABI编码函数
2023-01-17 10:40 3041. abi.encode()returns(bytes):对 ... -
数据位置
2023-01-17 10:24 1771.函数参数包括返回的参数默认是memory 2.局部变量默认 ... -
随机数
2023-01-17 10:06 196https://www.paradigm.xyz/2023/0 ... -
extcodesize
2023-01-16 11:16 286extcodesize取出的byte code长度,若长度大于 ...
相关推荐
学园楽音 用于C64 SID芯片的音乐宏语言(MML)...// Parse string and compile into assembly code let compiler = new gk . Compiler ( ) ; let asm = compiler . compile ( source ) ; // You can get informat
Let me explain. With Microsoft .NET technology taking the world by storm, with more and more information professionals getting involved, large numbers of books covering various aspects of this ...
AssemblyFactory ()let assembly = factory. mediaPickerAssembly () 使用程序集的module方法创建视图控制器: let data = MediaPickerData ( items : items, autocorrectionFilters : filters, selectedItem : ...
Cocoa和CocoaTouch的强大依赖注入。 重量轻,但功能齐全,而且超级易于使用。 是台风的纯粹斯威夫特继任者!! 台风使用Objective-C...let assembly = MyAssembly (). activated () let viewController = assembly.
Let's discuss these effects and how to avoid them. Term Paper AND Research Paper In my previous posts I showed how to prepare your system for NHibernate and how to implement a first NHibernate base ...
Assembly assembly = results.CompiledAssembly; // 执行编译后的代码 } ``` 这段代码会编译并执行一个简单的`Console.WriteLine`语句。 **JavaScript动态执行代码** JavaScript天生支持动态执行代码,这源于它...
例如,`Type`类代表了.NET框架中的任何类型,`Assembly`类用于加载和操作程序集,`MethodInfo`类提供了对方法信息的访问。在ASP.NET中,反射常用于动态加载用户控件、解析配置文件或者在运行时检查和调用对象的方法...
Let us tame these buzzwords in the context of SOA and Integration. While you do the day to day programming for solving business problems, you will be generating business code as well as ...
in Component->Assembly Search Paths->Add... menu 6) To compile UniDAC based application add Devart.Dac and Devart.UniDac to Tools->Options->Environment Options->Delphi Options->Library-> ...
powerful delegations it is able to let you use it for any kind of files, ie it can also digest manual pages, dvi files, texinfo, .... Among the other most noticeable features of a2ps are: − various ...
IMEI号分为两部分:TAC(Type Allocation Code)和FAC(Final Assembly Code),前者是设备类型代码,由制造商分配,用于区分不同型号的设备;后者是生产批次代码,表示设备的具体生产信息。此外,还有一串校验码,...
3. 汇编语言(Assembly Language)是一种低级语言,它将机器指令映射为人类可读的助记符,如"ADD"代表加法操作。这使得编程相比机器语言稍微友好一些,但仍比高级语言复杂。 4. 链接器(Linker)的作用是将编译后的...
Using a flexible Groovy-based DSL, Gradle provides declarative and extendable language elements that let you model your project’s needs the way you want. About the Book Gradle in Action is a ...
AddHandler Date Integer RaiseEvent AddressOf Declare Let ReadOnly Alias Dir Lib RemoveHandler And Do Like Redim AndAlso Double Long Resume Ansi Elseif Loop Return As Each Me REM Assembly else Mod ...
2. **创建Rust项目**:使用`cargo new`命令创建一个新的Rust项目,然后在项目目录中添加NASM源文件,例如`src/assembly.asm`。 3. **配置Cargo.toml**:在项目的`Cargo.toml`文件中,添加一个构建脚本`build.rs`,...
虽然它在浏览器端可能需要一些额外的工作才能运行(例如通过Web Workers或转换为Web Assembly),但它的强大之处在于能够轻松地构建文档结构,包括文本、段落、图片、表格等。例如,你可以创建一个段落,设置其样式...
Instead of directly instantiating the Editor classes within the Document, you can use the Factory Method to let each Document subclass decide which Editor it needs. Object Oriented Analysis and ...
在这个名为"final-project"的项目中,我们可以推测这是一位学生或学员在GA(可能是General Assembly,一个知名的全球教育机构)的最后阶段所完成的作品。这个项目的核心编程语言是JavaScript,这意味着我们将探讨的...
JavaScript的新特性,如ES6(ECMAScript 2015)及后续版本引入的箭头函数、模板字符串、let和const、解构赋值、async/await等,都对Chrome浏览器的JavaScript开发有着深远影响。这些新特性提高了代码的可读性和可...
"GA毕业后使用"暗示这个仓库是为那些完成了一定编程训练(可能是General Assembly这样的机构)的人设计的,帮助他们在实际工作中保持编程技巧和解决问题的能力。 【描述】与【标题】相同,再次确认了这个仓库的目标...