My omnium-gatherom of scripts and source code.
at main 132 lines 3.7 kB view raw
1char simname[] = "Y86-64 Processor: seq-std.hcl"; 2#include <stdio.h> 3#include "isa.h" 4#include "sim.h" 5int sim_main(int argc, char *argv[]); 6word_t gen_pc(){return 0;} 7int main(int argc, char *argv[]) 8 {plusmode=0;return sim_main(argc,argv);} 9long long gen_icode() 10{ 11 return ((imem_error) ? (I_NOP) : (imem_icode)); 12} 13 14long long gen_ifun() 15{ 16 return ((imem_error) ? (F_NONE) : (imem_ifun)); 17} 18 19long long gen_instr_valid() 20{ 21 return ((icode) == (I_NOP) || (icode) == (I_HALT) || (icode) == 22 (I_RRMOVQ) || (icode) == (I_IRMOVQ) || (icode) == (I_RMMOVQ) || 23 (icode) == (I_MRMOVQ) || (icode) == (I_ALU) || (icode) == (I_JMP) || 24 (icode) == (I_CALL) || (icode) == (I_RET) || (icode) == (I_PUSHQ) || 25 (icode) == (I_POPQ)); 26} 27 28long long gen_need_regids() 29{ 30 return ((icode) == (I_RRMOVQ) || (icode) == (I_ALU) || (icode) == 31 (I_PUSHQ) || (icode) == (I_POPQ) || (icode) == (I_IRMOVQ) || (icode) 32 == (I_RMMOVQ) || (icode) == (I_MRMOVQ)); 33} 34 35long long gen_need_valC() 36{ 37 return ((icode) == (I_IRMOVQ) || (icode) == (I_RMMOVQ) || (icode) == 38 (I_MRMOVQ) || (icode) == (I_JMP) || (icode) == (I_CALL)); 39} 40 41long long gen_srcA() 42{ 43 return (((icode) == (I_RRMOVQ) || (icode) == (I_RMMOVQ) || (icode) == 44 (I_ALU) || (icode) == (I_PUSHQ)) ? (ra) : ((icode) == (I_POPQ) || 45 (icode) == (I_RET)) ? (REG_RSP) : (REG_NONE)); 46} 47 48long long gen_srcB() 49{ 50 return (((icode) == (I_ALU) || (icode) == (I_RMMOVQ) || (icode) == 51 (I_MRMOVQ)) ? (rb) : ((icode) == (I_PUSHQ) || (icode) == (I_POPQ) 52 || (icode) == (I_CALL) || (icode) == (I_RET)) ? (REG_RSP) : 53 (REG_NONE)); 54} 55 56long long gen_dstE() 57{ 58 return ((((icode) == (I_RRMOVQ)) & (cond)) ? (rb) : ((icode) == 59 (I_IRMOVQ) || (icode) == (I_ALU)) ? (rb) : ((icode) == (I_PUSHQ) 60 || (icode) == (I_POPQ) || (icode) == (I_CALL) || (icode) == 61 (I_RET)) ? (REG_RSP) : (REG_NONE)); 62} 63 64long long gen_dstM() 65{ 66 return (((icode) == (I_MRMOVQ) || (icode) == (I_POPQ)) ? (ra) : 67 (REG_NONE)); 68} 69 70long long gen_aluA() 71{ 72 return (((icode) == (I_RRMOVQ) || (icode) == (I_ALU)) ? (vala) : ( 73 (icode) == (I_IRMOVQ) || (icode) == (I_RMMOVQ) || (icode) == 74 (I_MRMOVQ)) ? (valc) : ((icode) == (I_CALL) || (icode) == (I_PUSHQ) 75 ) ? -8 : ((icode) == (I_RET) || (icode) == (I_POPQ)) ? 8 : 0); 76} 77 78long long gen_aluB() 79{ 80 return (((icode) == (I_RMMOVQ) || (icode) == (I_MRMOVQ) || (icode) == 81 (I_ALU) || (icode) == (I_CALL) || (icode) == (I_PUSHQ) || (icode) 82 == (I_RET) || (icode) == (I_POPQ)) ? (valb) : ((icode) == 83 (I_RRMOVQ) || (icode) == (I_IRMOVQ)) ? 0 : 0); 84} 85 86long long gen_alufun() 87{ 88 return (((icode) == (I_ALU)) ? (ifun) : (A_ADD)); 89} 90 91long long gen_set_cc() 92{ 93 return ((icode) == (I_ALU)); 94} 95 96long long gen_mem_read() 97{ 98 return ((icode) == (I_MRMOVQ) || (icode) == (I_POPQ) || (icode) == 99 (I_RET)); 100} 101 102long long gen_mem_write() 103{ 104 return ((icode) == (I_RMMOVQ) || (icode) == (I_PUSHQ) || (icode) == 105 (I_CALL)); 106} 107 108long long gen_mem_addr() 109{ 110 return (((icode) == (I_RMMOVQ) || (icode) == (I_PUSHQ) || (icode) == 111 (I_CALL) || (icode) == (I_MRMOVQ)) ? (vale) : ((icode) == (I_POPQ) 112 || (icode) == (I_RET)) ? (vala) : 0); 113} 114 115long long gen_mem_data() 116{ 117 return (((icode) == (I_RMMOVQ) || (icode) == (I_PUSHQ)) ? (vala) : ( 118 (icode) == (I_CALL)) ? (valp) : 0); 119} 120 121long long gen_Stat() 122{ 123 return (((imem_error) | (dmem_error)) ? (STAT_ADR) : !(instr_valid) ? 124 (STAT_INS) : ((icode) == (I_HALT)) ? (STAT_HLT) : (STAT_AOK)); 125} 126 127long long gen_new_pc() 128{ 129 return (((icode) == (I_CALL)) ? (valc) : (((icode) == (I_JMP)) & (cond) 130 ) ? (valc) : ((icode) == (I_RET)) ? (valm) : (valp)); 131} 132