%%capture
%run 05_opcodes.ipynb
---------------------------------------------------------------------------
OSError                                   Traceback (most recent call last)
File ~/python3.8/lib/python3.8/site-packages/IPython/core/magics/execution.py:701, in ExecutionMagics.run(self, parameter_s, runner, file_finder)
    700     fpath = arg_lst[0]
--> 701     filename = file_finder(fpath)
    702 except IndexError as e:

File ~/python3.8/lib/python3.8/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 `'05_opcodes.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', '05_opcodes.ipynb')

File ~/python3.8/lib/python3.8/site-packages/IPython/core/interactiveshell.py:2417, in InteractiveShell.run_line_magic(self, magic_name, line, _stack_depth)
   2415     kwargs['local_ns'] = self.get_local_scope(stack_depth)
   2416 with self.builtin_trap:
-> 2417     result = fn(*args, **kwargs)
   2419 # The code below prevents the output from being displayed
   2420 # when using magics with decodator @output_can_be_silenced
   2421 # when the last Python token in the expression is a ';'.
   2422 if getattr(fn, magic.MAGIC_OUTPUT_CAN_BE_SILENCED, False):

File ~/python3.8/lib/python3.8/site-packages/IPython/core/magics/execution.py:712, in ExecutionMagics.run(self, parameter_s, runner, file_finder)
    710     if os.name == 'nt' and re.match(r"^'.*'$",fpath):
    711         warn('For Windows, use double quotes to wrap a filename: %run "mypath\\myfile.py"')
--> 712     raise Exception(msg) from e
    713 except TypeError:
    714     if fpath in sys.meta_path:

Exception: File `'05_opcodes.ipynb'` not found.

Jump#

def jump(evm):
    counter = evm.stack.pop()

    # make sure that we jump to an JUMPDEST opcode
    if not evm.program[counter] == JUMPDEST:
        raise Exception("Can only jump to JUMPDEST")

    evm.pc = counter
    evm.gas_dec(8)
def jumpi(evm):
    counter, b = evm.stack.pop(), evm.stack.pop()

    if b != 0: evm.pc = counter
    else     : evm.pc += 1
    
    evm.gas_dec(10)
def pc(evm):
    evm.stack.push(cpu.pc)
    evm.pc += 1
    evm.gas_dec(2)
def jumpdest(evm):
    evm.pc += 1
    evm.gas_dec(1)