Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- contract AssemblyBasicOperations {
- function normalLoop() public view returns (uint result) {
- for (uint i = 0; i < 10; i++) {
- result += i;
- }
- }
- function assemblyLoop() public view returns (uint result) {
- uint i = 0;
- assembly {
- loop:
- // result += i
- result := add(result, i)
- // i++
- i := add(i, 1)
- // if (i < 10) loop again
- jumpi(loop, lt(i, 10))
- }
- }
- function normalIf(uint num1, uint num2) public view returns (uint result) {
- if (num1 > num2) {
- result = num1;
- } else {
- result = num2;
- }
- }
- function assemblyIf(uint num1, uint num2) public view returns (uint result) {
- assembly {
- jumpi(num1Greater, gt(num1, num2))
- jump(num2IsGreaterOrEqual)
- // if (num1 > num2) goto num1Greater
- num1Greater:
- // result = num1
- result := num1
- jump(end)
- // else
- num2IsGreaterOrEqual:
- // result = num2
- result := num2
- end:
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement