-
Notifications
You must be signed in to change notification settings - Fork 0
/
TuringMachineCpuSimulator.html
94 lines (84 loc) · 3.84 KB
/
TuringMachineCpuSimulator.html
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<link rel="stylesheet" type="text/css" href="styles/styles.css">
<link rel="stylesheet" type="text/css" href="styles/elements.css">
<link rel="stylesheet" type="text/css" href="styles/view.css">
<link rel="stylesheet" type="text/css" href="styles/code.css">
<link rel="stylesheet" type="text/css" href="styles/turing.css">
<title>Симулятор CPU на машинах Тьюринга</title>
</head>
<body>
<div class="simulator">
<div class="controls">
<input type="submit" class="button" value="Запустить" id="start-stop-btn">
<input type="submit" class="button" value="Шаг" id="step-btn">
<input type="submit" class="button" value="Шаг операции" id="step-operation-btn">
<input type="submit" class="button" value="Сброс" id="reset-btn" >
<input type="submit" class="button" value="Компилировать", onclick="simulator.Reset(); simulator.CompileProgram()">
</div>
<div class="code">
<div class="header">Программа на ассемблере</div>
<div class="code-area">
<div class="code-input-highlight" id="code-highlight-box"></div>
<textarea class="code-input" id="code-box">
; Симулятор процессора на машинах Тьюринга
; https://github.com/dronperminov/TuringMachineCpuSimulator
; Пример вычисления числа Фибоначчи по номеру в регистре A
JMP start
.loop:
PUSH B ; сохраняем предыдущий член последовательности
ADD B, C ; вычисляем новый
POP C ; возвращаем сохранённый на место предыдущего
DEC A ; уменьшаем номер
JNZ .loop
JMP end
start:
MOV A, 11 ; номер числа Фибоначчи
MOV C, 0x1
CMP A, 12
CMP A, 11
CMP A, 10
JMP .loop
end:
XOR A, B</textarea>
</div>
</div>
<div class="left-footer">
<div class="footer-cell">
<a href="https://github.com/dronperminov/TuringMachineCpuSimulator#readme" target="_blank">Инструкция</a>
</div>
<div class="footer-cell"><a href="#" onclick="simulator.LoadProgram(FIBONACCI_EXAMPLE)">Пример 1</a></div>
<div class="footer-cell"><a href="#" onclick="simulator.LoadProgram(KOLLATZ_EXAMPLE)">Пример 2</a></div>
<div class="footer-cell"><a href="#" onclick="simulator.LoadProgram(EUCLID_EXAMPLE)">Пример 3</a></div>
</div>
<div class="right-header"></div>
<div class="view">
<div class="registers" id="registers-box"></div>
<div class="flags" id="flags-box"></div>
<div class="machine" id="stack-machine-box"></div>
<div class="machine" id="machine-box"></div>
<div class="machine" id="memory-machine-box"></div>
</div>
<div class="right-footer"></div>
</div>
<script src="js/examples.js"></script>
<script src="js/constants.js"></script>
<script src="js/highlight.js"></script>
<script src="js/tape.js"></script>
<script src="js/register.js"></script>
<script src="js/flag.js"></script>
<script src="js/turing_machine.js"></script>
<script src="js/command_machine.js"></script>
<script src="js/stack_machine.js"></script>
<script src="js/memory_machine.js"></script>
<script src="js/cpu_simulator.js"></script>
<script>
let n_bits = 8
let n_memory = 50
let simulator = new CpuSimulator(commandMachine, stackMachine, memoryMachine, n_bits, n_memory)
</script>
</body>
</html>