Dateien hochladen nach „“

master
Justus Jan Nico Wolff 2022-08-25 19:01:52 +02:00
parent 1971a6f15e
commit cc12a68bc0
5 changed files with 415 additions and 0 deletions

255
debugRAM 100644
View File

@ -0,0 +1,255 @@
0:0x10010000
1:0x111
2:0x10100000
3:0x1000
4:0x11000000
5:0x1001
6:0x11100001
7:0x10
8:0x11
9:101
10:0x10000000
11:0x10000000
12:0x10000000
13:0x10000000
14:0x10000000
15:0x10000000
16:0x10000000
17:0x10000000
18:0x10000000
19:0x10000000
20:0x10000000
21:0x10000000
22:0x10000000
23:0x10000000
24:0x10000000
25:0x10000000
26:0x10000000
27:0x10000000
28:0x10000000
29:0x10000000
30:0x10000000
31:0x10000000
32:0x10000000
33:0x10000000
34:0x10000000
35:0x10000000
36:0x10000000
37:0x10000000
38:0x10000000
39:0x10000000
40:0x10000000
41:0x10000000
42:0x10000000
43:0x10000000
44:0x10000000
45:0x10000000
46:0x10000000
47:0x10000000
48:0x10000000
49:0x10000000
50:0x10000000
51:0x10000000
52:0x10000000
53:0x10000000
54:0x10000000
55:0x10000000
56:0x10000000
57:0x10000000
58:0x10000000
59:0x10000000
60:0x10000000
61:0x10000000
62:0x10000000
63:0x10000000
64:0x10000000
65:0x10000000
66:0x10000000
67:0x10000000
68:0x10000000
69:0x10000000
70:0x10000000
71:0x10000000
72:0x10000000
73:0x10000000
74:0x10000000
75:0x10000000
76:0x10000000
77:0x10000000
78:0x10000000
79:0x10000000
80:0x10000000
81:0x10000000
82:0x10000000
83:0x10000000
84:0x10000000
85:0x10000000
86:0x10000000
87:0x10000000
88:0x10000000
89:0x10000000
90:0x10000000
91:0x10000000
92:0x10000000
93:0x10000000
94:0x10000000
95:0x10000000
96:0x10000000
97:0x10000000
98:0x10000000
99:0x10000000
100:0x10000000
101:0x10000000
102:0x10000000
103:0x10000000
104:0x10000000
105:0x10000000
106:0x10000000
107:0x10000000
108:0x10000000
109:0x10000000
110:0x10000000
111:0x10000000
112:0x10000000
113:0x10000000
114:0x10000000
115:0x10000000
116:0x10000000
117:0x10000000
118:0x10000000
119:0x10000000
120:0x10000000
121:0x10000000
122:0x10000000
123:0x10000000
124:0x10000000
125:0x10000000
126:0x10000000
127:0x10000000
128:0x10000000
129:0x10000000
130:0x10000000
131:0x10000000
132:0x10000000
133:0x10000000
134:0x10000000
135:0x10000000
136:0x10000000
137:0x10000000
138:0x10000000
139:0x10000000
140:0x10000000
141:0x10000000
142:0x10000000
143:0x10000000
144:0x10000000
145:0x10000000
146:0x10000000
147:0x10000000
148:0x10000000
149:0x10000000
150:0x10000000
151:0x10000000
152:0x10000000
153:0x10000000
154:0x10000000
155:0x10000000
156:0x10000000
157:0x10000000
158:0x10000000
159:0x10000000
160:0x10000000
161:0x10000000
162:0x10000000
163:0x10000000
164:0x10000000
165:0x10000000
166:0x10000000
167:0x10000000
168:0x10000000
169:0x10000000
170:0x10000000
171:0x10000000
172:0x10000000
173:0x10000000
174:0x10000000
175:0x10000000
176:0x10000000
177:0x10000000
178:0x10000000
179:0x10000000
180:0x10000000
181:0x10000000
182:0x10000000
183:0x10000000
184:0x10000000
185:0x10000000
186:0x10000000
187:0x10000000
188:0x10000000
189:0x10000000
190:0x10000000
191:0x10000000
192:0x10000000
193:0x10000000
194:0x10000000
195:0x10000000
196:0x10000000
197:0x10000000
198:0x10000000
199:0x10000000
200:0x10000000
201:0x10000000
202:0x10000000
203:0x10000000
204:0x10000000
205:0x10000000
206:0x10000000
207:0x10000000
208:0x10000000
209:0x10000000
210:0x10000000
211:0x10000000
212:0x10000000
213:0x10000000
214:0x10000000
215:0x10000000
216:0x10000000
217:0x10000000
218:0x10000000
219:0x10000000
220:0x10000000
221:0x10000000
222:0x10000000
223:0x10000000
224:0x10000000
225:0x10000000
226:0x10000000
227:0x10000000
228:0x10000000
229:0x10000000
230:0x10000000
231:0x10000000
232:0x10000000
233:0x10000000
234:0x10000000
235:0x10000000
236:0x10000000
237:0x10000000
238:0x10000000
239:0x10000000
240:0x10000000
241:0x10000000
242:0x10000000
243:0x10000000
244:0x10000000
245:0x10000000
246:0x10000000
247:0x10000000
248:0x10000000
249:0x10000000
250:0x10000000
251:0x10000000
252:0x10000000
253:0x10000000
254:0x10000000

View File

@ -0,0 +1,10 @@
load 111 to a
load 1000 to b
sto a+b to 1001
HALT
num1
num2
sum

View File

@ -0,0 +1,23 @@
0x10000000 : NULL
0x10010*** : load [add] to a
0x10100*** : load [add] to b
0x10110*** : load *[add] to a
0x11111*** : load *[add] to b
0x11010*** : sto a to [add]
0x11100*** : sto b to [add]
0x11110*** : sto a to *[add]
0x10000*** : sto b to *[add]
0x10001*** : sto a<<(b) to [add]
0x10010*1* : sto a>>(b) to [add]
0x10011*** : sto a and b to [add]
0x10100*** : sto a or b to [add]
0x10101*** : sto not(a) to [add]
0x10110*** : sto a xor b to [add]
0x10111*** : sto a<< to [add]
0x11000*** : sto a+b to [add]
0x11001*** : goto [cadd]
0x11010*** : goto *[cadd]
0x11011*** : if a=b goto [cadd]
0x11100*** : if a>b goto [cadd]
0x11101*** : if a<b goto [cadd]
0x11100001: HALT

106
main.py 100644
View File

@ -0,0 +1,106 @@
import ast
def updateRAM(toupdate):
temp = ""
for i in toupdate:
temp = temp + i + ":" + toupdate[i] + "\n"
file = open("debugRAM", 'w')
file.write(temp)
file.close()
RAM = open("RAM", 'r')
RAM = RAM.read()
if RAM == "":
RAM = {}
for i in range(int('11111111', 2)):
RAM[str(i)] = "0x10000000"
updateRAM(RAM)
file = open("RAM", 'w')
file.write(str(RAM))
file.close()
exit()
else:
RAM = ast.literal_eval(RAM)
line = 0
registera = "0x10000000"
registerb = "0x10000000"
while True:
line = str(line)
command = RAM[line]
arg = RAM[str(int(line)+1)]
arg = arg[1:]
arg = arg[1:]
line = int(line)
line += 2
line = str(line)
print(command)
if command == "0x10010000":
registera = RAM[str(int(arg, 2))]
elif command == "0x10100000":
registerb = RAM[str(int(arg, 2))]
elif command == "0x10110000":
registera = RAM[str(int(RAM[str(int(arg, 2))], 2))]
elif command == "0x11111000":
registerb = RAM[str(int(RAM[str(int(arg, 2))], 2))]
elif command == "0x11010000":
RAM[str(int(arg, 2))] = registera
elif command == "0x11100000":
RAM[str(int(arg, 2))] = registerb
elif command == "0x11110000":
RAM[str(int(RAM[str(int(arg, 2))], 2))] = registera
elif command == "0x10000000":
RAM[str(int(RAM[str(int(arg, 2))], 2))] = registerb
elif command == "0x10001000":
registera = registerb
RAM[str(int(arg, 2))] = registera
elif command == "0x10010010":
registerb = registera
RAM[str(int(arg, 2))] = registera
elif command == "0x10011000":
if registera[0] == "1" and registerb[0] == "1":
RAM[str(int(arg, 2))] = "1x10000000"
else:
RAM[str(int(arg, 2))] = "0x10000000"
elif command == "0x10100000":
if registera[0] == "1" or registerb[0] == "1":
RAM[str(int(arg, 2))] = "1x10000000"
else:
RAM[str(int(arg, 2))] = "0x10000000"
elif command == "0x10101000":
if registera[0] == "1":
RAM[str(int(arg, 2))] = "0x10000000"
else:
RAM[str(int(arg, 2))] = "1x10000000"
elif command == "0x10110000":
if (registera[0] == "0" and registerb[0] == "0") or (registera[0] == "1" and registerb[0] == "1"):
RAM[str(int(arg, 2))] = "0x10000000"
else:
RAM[str(int(arg, 2))] = "1x10000000"
elif command == "0x10111000":
registera = RAM[str(int(arg, 2))]
elif command == "0x11000000":
RAM[str(int(arg, 2))] = bin(int(registera[2:], 2) + int(registerb[2:], 2))[2:]
elif command == "0x11001000":
line = int(arg, 2)
elif command == "0x11010000":
line = int(RAM[str(int(arg, 2))], 2)
elif command == "0x11011000":
if registera[0] == registerb[0]:
line = int(arg, 2)
elif command == "0x11100000":
if registera[0] > registerb[0]:
line = int(arg, 2)
elif command == "0x11101000":
if registera[0] < registerb[0]:
line = int(arg, 2)
elif command == "0x11100001":
print()
print("programm finished")
updateRAM(RAM)
exit()
updateRAM(RAM)
print()
print("programm finished")
updateRAM(RAM)

21
programm_editor.py 100644
View File

@ -0,0 +1,21 @@
import ast
file = open("RAM", 'r')
file = file.read()
file = ast.literal_eval(file)
while True:
temp = ""
for i in file:
temp = temp + i + ":" + file[i] + "\n"
print(temp)
addr = input("addresse: ")
command = input("befehl: ")
arg = input("argument: ")
file[addr] = command
file[str(int(addr)+1)] = arg
if input("beenden?") == "y":
break
code = file
file = open("RAM", 'w')
file.write(str(code))
file.close()