153 lines
3.2 KiB
Plaintext
153 lines
3.2 KiB
Plaintext
{
|
|
"cells": [
|
|
{
|
|
"cell_type": "markdown",
|
|
"id": "1c7a11d9",
|
|
"metadata": {},
|
|
"source": [
|
|
"This test will test (lol) the calling convention in Spider.\n",
|
|
"As defined, it will use the CPU as a python object.\n"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": null,
|
|
"id": "b9c572cd",
|
|
"metadata": {},
|
|
"outputs": [],
|
|
"source": [
|
|
"# The state of the spider vm in a simple\n",
|
|
"# python object abstraction\n",
|
|
"spider_vm = {\n",
|
|
" 'regs':{\n",
|
|
" 'RA':0,\n",
|
|
" 'RB':0,\n",
|
|
" 'RC':0,\n",
|
|
" 'RD':0,\n",
|
|
" 'RX':0,\n",
|
|
" 'RY':0,\n",
|
|
" 'R0':0,\n",
|
|
" 'R1':0,\n",
|
|
" 'R2':0,\n",
|
|
" 'R3':0,\n",
|
|
" 'R4':0,\n",
|
|
" 'R5':0,\n",
|
|
" 'R6':0,\n",
|
|
" 'R7':0,\n",
|
|
" 'R8':0,\n",
|
|
" 'R9':0,\n",
|
|
" 'RF':0,\n",
|
|
" 'RI':0,\n",
|
|
" 'RS':0,\n",
|
|
" 'RZ':0,\n",
|
|
" 'RE':0,\n",
|
|
" 'RH':0,\n",
|
|
" 'RV':0,\n",
|
|
" 'RM':0,\n",
|
|
" },\n",
|
|
" 'stack': [],\n",
|
|
"}"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": null,
|
|
"id": "a1ddd324",
|
|
"metadata": {},
|
|
"outputs": [],
|
|
"source": [
|
|
"# Input parameters, measured as bits\n",
|
|
"# For simplicity\n",
|
|
"# 1 boolean -> 1 bit\n",
|
|
"# 1 byte -> 8 bits\n",
|
|
"input_params = [ {'name':'asd','size':8} ]\n",
|
|
"\n",
|
|
"# Define the return types here\n",
|
|
"ouput_return = [ {'name':'ret1','size':8} ]"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"id": "bbe2c356",
|
|
"metadata": {},
|
|
"source": [
|
|
"Now, on this function it will perform the tasks of ordering the registers and stack based on the parameters."
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": null,
|
|
"id": "02a2ad1a",
|
|
"metadata": {},
|
|
"outputs": [],
|
|
"source": [
|
|
"# TODO!!!\n",
|
|
"def do_function_call(input_params:list, output_return:list):\n",
|
|
" pass"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"id": "ac6440ca",
|
|
"metadata": {},
|
|
"source": [
|
|
"Now, unwind the stack and stuff to make sure the machine goes back to its previous state BEFORE the function"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": null,
|
|
"id": "d2e4ce44",
|
|
"metadata": {},
|
|
"outputs": [],
|
|
"source": [
|
|
"# TODO !!!\n",
|
|
"def undo_function_call(input_params:list, output_return:list):\n",
|
|
" pass"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"id": "5397697f",
|
|
"metadata": {},
|
|
"source": [
|
|
"VERY GOOD\n",
|
|
"Now check the state of the machine before and after\n",
|
|
"\n",
|
|
"Try different combinations: One function call, multiple function calls, recursive calls, etc."
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": null,
|
|
"id": "b58fbf72",
|
|
"metadata": {},
|
|
"outputs": [],
|
|
"source": []
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": null,
|
|
"id": "2860c30b",
|
|
"metadata": {},
|
|
"outputs": [],
|
|
"source": []
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": null,
|
|
"id": "2aa8a8fc",
|
|
"metadata": {},
|
|
"outputs": [],
|
|
"source": []
|
|
}
|
|
],
|
|
"metadata": {
|
|
"language_info": {
|
|
"name": "python"
|
|
}
|
|
},
|
|
"nbformat": 4,
|
|
"nbformat_minor": 5
|
|
}
|