文章
视频
讲堂
百科图谱
线下集训
更多
问答
提问
发表文章
专栏
活动
文档
工作
集市
发现
Toggle navigation
文章
问答
视频
讲堂
线下集训
专栏
活动
工作
文档
集市
搜索
登录/注册
SC programmer
文章
专栏
问答
视频
课程
集市作品
活动
招聘
TA的视频
TA的合集
二进制指数运算 | Solidity 0.8
本视频讲解了如何使用汇编语言编写二进制指数算法,该算法高效地计算x的n次方,并在MakerDAO稳定币中用于计算复利。视频分为几个部分,首先处理x为0的情况,然后处理x大于0的情况,包括算法编写、溢出检查和舍入误差检查。对于x为0的情况,当n为0时返回1,当n大于0时返回0。对于x大于0的情况,算法通过初始化z并使用循环计算x的n次方,同时进行溢出和舍入检查,确保计算的准确性。最终,算法成功编译并部署,示例计算结果验证了其正确性。
21
0
0
2025-01-27 09:02
二进制指数运算的解释与7个例子
本文介绍了二进制指数算法,通过七个示例详细说明了如何高效计算x的n次方。传统方法是将x自身相乘n次,而二进制指数法则通过将n分解为最大的2的幂和余数,显著减少了乘法次数。例如,计算x的4次方只需进行2次乘法,而不是4次。通过不断将n除以2并更新结果,算法能够快速得出x的任意次方,展示了其高效性和实用性。
19
0
0
2025-01-27 09:02
汇编溢出、下溢和定点数学 | Solidity 0.8
本视频介绍了如何使用汇编语言检查溢出和下溢,并进行定点数学运算。首先,讲解了如何在加法和乘法中检测溢出,强调了在汇编中需要手动处理这些情况。接着,介绍了定点数学的概念,展示了如何对定点数进行四舍五入以及如何进行定点乘法,确保在乘法时处理溢出问题。最后,通过示例演示了如何在合约中实现这些功能,包括加法、减法、定点乘法和四舍五入的调用与测试。
21
0
0
2025-01-27 09:02
汇编循环 | Solidity 0.8
本文介绍了如何在汇编语言中编写循环,包括for循环和while循环的基本示例。首先,通过for循环实现从1到n-1的整数求和,并通过while循环实现计数器的递增。接着,展示了如何使用for循环计算x的n次方,其中n为2的幂,并处理了n为0和n不是2的幂的边界情况。最后,通过示例验证了函数的正确性,包括对有效输入和无效输入的处理。
23
0
0
2025-01-27 09:01
汇编错误 | Solidity 0.8
在汇编中抛出错误的方法是调用revert函数,并传入参数p和s,表示内存的起始和结束位置。若条件不满足(例如输入x大于10),则会执行revert,所有之前的状态更改将被撤销。在示例中,我们将p和s都设置为0,表示不返回任何错误信息。通过这种方式,可以在合约中有效地处理错误。
17
0
0
2025-01-27 09:01
汇编 If 和 Switch 语句 | Solidity 0.8
本文介绍了如何在Solidity的汇编中编写条件语句,包括if语句和switch语句。使用if语句时,条件表达式的结果为正数表示真,零表示假;汇编中没有else语句,因此需要另写if语句处理其他情况。通过示例,展示了如何使用if语句返回两个数中的最小值,以及如何使用switch语句返回两个数中的最大值。最终,代码成功编译并部署,验证了最小值和最大值的计算。
21
0
0
2025-01-27 09:01
汇编变量 | Solidity 0.8
本视频系列将介绍如何理解MakerDAO稳定币合约中的Rpower函数,该函数使用二进制指数法计算复利,且代码采用汇编语言编写。系列的第一部分将教授汇编语言的基本知识,包括如何声明和赋值局部变量。通过示例,展示了如何在汇编中声明变量并将其赋值给Solidity变量,最终成功编译并部署合约,验证了变量赋值的正确性。
33
0
0
2025-01-27 09:01
调用 | EVM 内存 10
本视频讲解了如何在汇编中使用加载标签函数,包括调用、调用数据复制、返回数据大小和返回数据复制,以调用另一个合约。函数调用接受多个输入,包括合约地址、最大燃气和以太币数量,并指定输入和输出的内存区域。通过调用函数,可以将数据从调用数据复制到内存,并获取返回数据的大小。视频中创建了一个合约,并实现了一个外部函数,该函数调用计数器合约的增量函数,并返回增量后的计数。通过汇编代码,加载自由内存指针,复制调用数据,执行合约调用,并处理返回数据。最后,通过测试合约验证了功能,成功返回了增量后的计数值。视频展示了如何使用汇编进行外部合约调用的完整示例。
26
0
0
2025-01-27 09:01
回退(revert) | EVM 内存 10
在Solidity中,函数可以通过执行revert函数或在require语句中某些条件失败而回退。我们还可以使用汇编语言使函数回退。汇编中的revert函数接受两个输入:起始位置和长度,它会回退执行并返回存储在内存中从起始位置到起始位置加长度的数据。本文通过创建一个名为test revert的函数,演示了如何使用汇编实现revert,并展示了如何在内存中存储错误信息以便在回退时返回。通过将错误信息存储在特定内存位置,并计算出函数选择器、字符串偏移量和长度,最终调用revert函数,成功实现了在交易日志中显示错误信息的功能。此过程展示了如何在汇编中重现Solidity代码的回退机制。
26
0
0
2025-01-27 09:00
返回 | EVM 内存 9
本文介绍了如何在汇编中使用返回函数返回存储在内存中的数据。首先,定义了一个返回函数,该函数接受起始地址和长度作为输入,停止代码执行并返回指定内存范围的数据。通过示例,展示了如何将两个UN256数(11和22)存储在内存地址0x80及其后32字节的位置,并通过调用返回函数获取这些值。接着,强调了调用返回函数会中止当前函数的执行,导致无法返回后续定义的值(如123和456),而是返回之前存储的值(11和22)。最后,示例展示了如何使用返回函数ABI编码一个动态数组,存储三个元素(11、22和33),并返回该数组的内存部分。通过这些示例,读者可以理解汇编中返回函数的使用及其对代码执行流程的影响。
23
0
0
2025-01-27 09:00
‹
1
2
3
4
5
6
7
8
›
SC programmer
关注
贡献值: 5
学分: 10
https://www.smartcontract.engineer/
0 关注
1 粉丝
×
发送私信
请将文档链接发给晓娜,我们会尽快安排上架,感谢您的推荐!
发给:
内容:
提醒
检测到你当前登录的账号还未绑定手机号
请绑定后再发布
去绑定
×
编辑封面图
封面预览
取消
确认