My omnium-gatherom of scripts and source code.
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