📄 load.c
字号:
/*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ ++ load.c - this file implements load instructions ++ LBI, LWI, LDI, LQI, LF1I, LF2I ++ LAD, LAI ++ LB, LW, LD, LQ, LF1, LF2 ++ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*//*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ macros ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*//*#define DBG_RUN 1*/#ifdef DBG_RUN#define DBG_RUN0(str); printf("run(): "); printf(str);#define DBG_RUN1(str,arg1); printf("run(): "); printf(str,arg1);#else#define DBG_RUN0(str);#define DBG_RUN1(str,arg1); #endif /* LBI $r1, byte constant -> BBB first byte = instruction second byte = register to put constant into third byte = constant to place in register*/#define HANDLE_LBI(); DBG_RUN0("Optimized HANDLE_LBI\n");R[RAM[R[$IP]+1]]=(S1)RAM[R[$IP]+2]; R[$IP]=R[$IP]+3; /*-----------------------------------------------------------------*/#define HANDLE_LWI(); DBG_RUN0("Optimized HANDLE_LWI\n");R[RAM[R[$IP]+1]]=(S2)*((S2*)&RAM[R[$IP]+2]);R[$IP]=R[$IP]+4;/*-----------------------------------------------------------------*/#define HANDLE_LDI(); DBG_RUN0("Optimized HANDLE_LDI\n"); R[RAM[R[$IP]+1]]=(S4)*((S4*)&RAM[R[$IP]+2]);R[$IP]=R[$IP]+6;/*-----------------------------------------------------------------*/#define HANDLE_LQI(); DBG_RUN0("Optimized HANDLE_LQI\n"); R[RAM[R[$IP]+1]]=(S8)*((S8*)&RAM[R[$IP]+2]);R[$IP]=R[$IP]+10;/*-----------------------------------------------------------------*/#define HANDLE_LF1I(); DBG_RUN0("Optimized HANDLE_LF1I\n"); Rf[RAM[R[$IP]+1]]=(F4)*((F4*)&RAM[R[$IP]+2]);R[$IP]=R[$IP]+6;/*-----------------------------------------------------------------*/#define HANDLE_LF2I(); DBG_RUN0("Optimized HANDLE_LF2I\n"); Rd[RAM[R[$IP]+1]]=(F8)*((F8*)&RAM[R[$IP]+2]);R[$IP]=R[$IP]+10;/*-----------------------------------------------------------------*//* LAD $r1, address */ #define HANDLE_LAD(); DBG_RUN0("Optimized HANDLE_LAD\n"); R[RAM[R[$IP]+1]]=(U8)*((U8*)&RAM[R[$IP]+2]);badAddress(R[RAM[R[$IP]+1]],R[$IP]); R[$IP]=R[$IP]+10;/*-----------------------------------------------------------------*//* LAI $r1, $r2, qword*/ #define HANDLE_LAI(); DBG_RUN0("Optimized HANDLE_LAI\n"); R[RAM[R[$IP]+1]]=(R[RAM[R[$IP]+2]])+((S8)*((S8*)&RAM[R[$IP]+3]));badAddress(R[RAM[R[$IP]+1]],R[$IP]); R[$IP]=R[$IP]+11;/*-----------------------------------------------------------------*//* LB $r1, $r2 -> BBB first byte = instruction second byte = register to put byte into third byte = register containing address where byte is located */#define HANDLE_LB(); DBG_RUN0("Optimized HANDLE_LB\n");badAddress(R[RAM[R[$IP]+2]],R[$IP]);R[RAM[R[$IP]+1]] = (S8)(*((S1*)&RAM[R[RAM[R[$IP]+2]]]));R[$IP]=R[$IP]+3;/*-----------------------------------------------------------------*/#define HANDLE_LW(); DBG_RUN0("Optimized HANDLE_LW\n");badAddress(R[RAM[R[$IP]+2]],R[$IP]);R[RAM[R[$IP]+1]] = (S8)(*((S2*)&RAM[(U8)R[RAM[R[$IP]+2]]]));R[$IP]=R[$IP]+3;/*-----------------------------------------------------------------*/#define HANDLE_LD(); DBG_RUN0("Optimized HANDLE_LD\n");badAddress(R[RAM[R[$IP]+2]],R[$IP]);R[RAM[R[$IP]+1]] = (S8)(*((S4*)&RAM[(U8)R[RAM[R[$IP]+2]]]));R[$IP]=R[$IP]+3;/*-----------------------------------------------------------------*/#define HANDLE_LQ(); DBG_RUN0("Optimized HANDLE_LQ\n");badAddress(R[RAM[R[$IP]+2]],R[$IP]);R[RAM[R[$IP]+1]] = (S8)(*((S8*)&RAM[(U8)R[RAM[R[$IP]+2]]]));R[$IP]=R[$IP]+3;/*-----------------------------------------------------------------*//* LFI $f, $r */#define HANDLE_LF1(); DBG_RUN0("Optimized HANDLE_LF1\n");badAddress(R[RAM[R[$IP]+2]],R[$IP]);Rf[RAM[R[$IP]+1]] = *((F4*)&RAM[(U8)R[RAM[R[$IP]+2]]]);R[$IP]=R[$IP]+3; /*-----------------------------------------------------------------*//* LF2 $d, $r */#define HANDLE_LF2(); DBG_RUN0("Optimized HANDLE_LF2\n");badAddress(R[RAM[R[$IP]+2]],R[$IP]);Rd[RAM[R[$IP]+1]] = *((F8*)&RAM[(U8)R[RAM[R[$IP]+2]]]);R[$IP]=R[$IP]+3;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -