%%capture
%run utils.ipynb
---------------------------------------------------------------------------
OSError Traceback (most recent call last)
File ~/.local/share/mise/installs/python/3.13.3/lib/python3.13/site-packages/IPython/core/magics/execution.py:727, in ExecutionMagics.run(self, parameter_s, runner, file_finder)
726 fpath = arg_lst[0]
--> 727 filename = file_finder(fpath)
728 except IndexError as e:
File ~/.local/share/mise/installs/python/3.13.3/lib/python3.13/site-packages/IPython/utils/path.py:90, in get_py_filename(name)
89 return py_name
---> 90 raise IOError("File `%r` not found." % name)
OSError: File `'utils.ipynb'` not found.
The above exception was the direct cause of the following exception:
Exception Traceback (most recent call last)
Cell In[1], line 1
----> 1 get_ipython().run_line_magic('run', 'utils.ipynb')
File ~/.local/share/mise/installs/python/3.13.3/lib/python3.13/site-packages/IPython/core/interactiveshell.py:2486, in InteractiveShell.run_line_magic(self, magic_name, line, _stack_depth)
2484 kwargs['local_ns'] = self.get_local_scope(stack_depth)
2485 with self.builtin_trap:
-> 2486 result = fn(*args, **kwargs)
2488 # The code below prevents the output from being displayed
2489 # when using magics with decorator @output_can_be_silenced
2490 # when the last Python token in the expression is a ';'.
2491 if getattr(fn, magic.MAGIC_OUTPUT_CAN_BE_SILENCED, False):
File ~/.local/share/mise/installs/python/3.13.3/lib/python3.13/site-packages/IPython/core/magics/execution.py:738, in ExecutionMagics.run(self, parameter_s, runner, file_finder)
736 if os.name == 'nt' and re.match(r"^'.*'$",fpath):
737 warn('For Windows, use double quotes to wrap a filename: %run "mypath\\myfile.py"')
--> 738 raise Exception(msg) from e
739 except TypeError:
740 if fpath in sys.meta_path:
Exception: File `'utils.ipynb'` not found.
Comparisons#
Very similar to the arithmetic opcodes. But rather than adding or subtracting values we compare them.
Less than#
def lt(evm):
a, b = evm.stack.pop(), evm.stack.pop()
evm.stack.push(1 if a < b else 0)
evm.pc += 1
evm.gas_dec(3)
Signed Less than#
def slt(evm): # signed less than
a, b = evm.stack.pop(), evm.stack.pop()
a = unsigned_to_signed(a)
b = unsigned_to_signed(b)
evm.stack.push(1 if a < b else 0)
evm.pc += 1
evm.gas_dec(3)
Greater than#
def gt(evm): # greater than
a, b = evm.stack.pop(), evm.stack.pop()
evm.stack.push(1 if a > b else 0)
evm.pc += 1
evm.gas_dec(3)
Signed Greater than#
def sgt(evm):
a, b = evm.stack.pop(), evm.stack.pop()
a = unsigned_to_signed(a)
b = unsigned_to_signed(b)
evm.stack.push(1 if a > b else 0)
evm.pc += 1
evm.gas_dec(3)
Equal#
def eq(evm):
a, b = cpu.stack.pop(), cpu.stack.pop()
cpu.stack.push(1 if a == b else 0)
cpu.pc += 1
cpu.gas_dec(3)
Is Zero#
def iszero(evm):
a = evm.stack.pop()
evm.stack.push(1 if a == 0 else 0)
evm.pc += 1
evm.gas_dec(3)