Advertisement
Guest User

Untitled

a guest
Mar 26th, 2019
60
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.00 KB | None | 0 0
  1. pragma solidity ^0.4.24;
  2.  
  3. contract AssemblyLoops {
  4.  
  5. function nativeLoops() public returns (uint _r) {
  6. for(uint i=0; i<10; i++){
  7. _r++;
  8. }
  9. }
  10.  
  11. function asmLoops() public returns (uint _r) {
  12. assembly {
  13. let i := 0
  14. loop:
  15. i := add(i, 1)
  16. _r := add(_r, 1)
  17. jumpi(loop, lt(i, 10))
  18. }
  19. }
  20.  
  21.  
  22. function inlineAsmLoops() public returns (uint _r) {
  23. assembly {
  24. 0
  25. 10
  26.  
  27. loop:
  28. //i:=add(i,1)
  29. dup2
  30. 1
  31. add
  32. swap2
  33. pop
  34.  
  35. //_r:=ad(_r,1)
  36. dup3
  37. 1
  38. add
  39. swap3
  40. pop
  41.  
  42. //lt(i,10)
  43. dup1
  44. dup3
  45. lt
  46.  
  47. //jumpi(loop, lt(i,10))
  48. loop
  49. jumpi
  50.  
  51. pop
  52. pop
  53.  
  54. }
  55. }
  56. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement