mirror of
https://github.com/MPSU/APS.git
synced 2025-09-16 09:40:10 +00:00
ЛР6. Исправление программы и микроархитектуры
В программе осуществлялся невыровненный доступ в память, использовался непонятный лейбл, инструкция ветвления прыгала на следующую инструкцию, что затруднит проверку результата ветвления. В микроархитектуре была ошибка с генерацией разрешения записи в регистровый файл.
This commit is contained in:
Binary file not shown.
Before Width: | Height: | Size: 281 KiB After Width: | Height: | Size: 289 KiB |
Binary file not shown.
Before Width: | Height: | Size: 74 KiB After Width: | Height: | Size: 72 KiB |
@@ -78,19 +78,20 @@
|
|||||||
0C: and x4, x1, x2
|
0C: and x4, x1, x2
|
||||||
10: sub x5, x4, x3
|
10: sub x5, x4, x3
|
||||||
14: mul x6, x3, x4 // неподдерживаемая инструкция
|
14: mul x6, x3, x4 // неподдерживаемая инструкция
|
||||||
18: jal x15, jlr
|
18: jal x15, 0x00034 // прыжок на адрес 0x4C
|
||||||
1C: jalr x15, 0x0(x6)
|
1C: jalr x15, 0x0(x6)
|
||||||
20: slli x7, x5, 31
|
20: slli x7, x5, 31
|
||||||
24: srai x8, x7, 1
|
24: srai x8, x7, 1
|
||||||
28: srli x9, x8, 29
|
28: srli x9, x8, 29
|
||||||
2C: sw x1, 0x0(x5)
|
2C: sw x1, 0x0(x4)
|
||||||
30: lw x10, 0x0(x5)
|
30: lw x10, 0x0(x4)
|
||||||
34: lui x11, 0xFFF80
|
34: lui x11, 0xFFF80
|
||||||
38: auipc x12, 0x00004
|
38: auipc x12, 0x00004
|
||||||
3C: bne x3, x4, 0x04
|
3C: bne x3, x4, 0x08 // перескок через
|
||||||
40: jal x13, 0x00004
|
40: // нелегальную нулевую инструкцию
|
||||||
44: jalr x14, 0x0(x13)
|
44: jal x13, 0x00004
|
||||||
48: jalr x15, 0x4(x15)
|
48: jalr x14, 0x0(x13)
|
||||||
|
4C: jalr x15, 0x4(x15)
|
||||||
```
|
```
|
||||||
|
|
||||||
Теперь в соответствии с кодировкой инструкций переведем программу в машинные коды:
|
Теперь в соответствии с кодировкой инструкций переведем программу в машинные коды:
|
||||||
@@ -102,19 +103,20 @@
|
|||||||
0C: 0000000 00001 00010 111 00100 0110011
|
0C: 0000000 00001 00010 111 00100 0110011
|
||||||
10: 0100000 00011 00100 000 00101 0110011
|
10: 0100000 00011 00100 000 00101 0110011
|
||||||
14: 0000001 00011 00100 000 00110 0110011
|
14: 0000001 00011 00100 000 00110 0110011
|
||||||
18: 00000011000000000000 01111 1101111
|
18: 00000011010000000000 01111 1101111
|
||||||
1C: 000000000000 00110 000 01111 1100111
|
1C: 000000000000 00110 000 01111 1100111
|
||||||
20: 0000000 11111 00101 001 00111 0010011
|
20: 0000000 11111 00101 001 00111 0010011
|
||||||
24: 0100000 00001 00111 101 01000 0010011
|
24: 0100000 00001 00111 101 01000 0010011
|
||||||
28: 0000000 11101 01000 101 01001 0010011
|
28: 0000000 11101 01000 101 01001 0010011
|
||||||
2C: 0000000 00001 00101 010 00000 0100011
|
2C: 0000000 00001 00100 010 00000 0100011
|
||||||
30: 000000000000 00101 010 01010 0000011
|
30: 000000000000 00100 010 01010 0000011
|
||||||
34: 11111111111110000000 01011 0110111
|
34: 11111111111110000000 01011 0110111
|
||||||
38: 00000000000000000100 01100 0010111
|
38: 00000000000000000100 01100 0010111
|
||||||
3C: 0000000 00011 00100 001 00100 1100011
|
3C: 0000000 00011 00100 001 01000 1100011
|
||||||
40: 00000000010000000000 01101 1101111
|
40: 00000000 00000000 00000000 00000000
|
||||||
44: 000000000000 01101 000 01110 1100111
|
44: 00000000010000000000 01101 1101111
|
||||||
48: 000000000100 01111 000 01111 1100111
|
48: 000000000000 01101 000 01110 1100111
|
||||||
|
4C: 000000000100 01111 000 01111 1100111
|
||||||
```
|
```
|
||||||
|
|
||||||
Данная программа, представленная в шестнадцатиричном формате находится в файле [program.txt](program.txt).
|
Данная программа, представленная в шестнадцатиричном формате находится в файле [program.txt](program.txt).
|
||||||
|
@@ -24,7 +24,7 @@ b3
|
|||||||
02
|
02
|
||||||
ef
|
ef
|
||||||
07
|
07
|
||||||
00
|
40
|
||||||
03
|
03
|
||||||
e7
|
e7
|
||||||
07
|
07
|
||||||
@@ -43,11 +43,11 @@ d4
|
|||||||
d4
|
d4
|
||||||
01
|
01
|
||||||
23
|
23
|
||||||
a0
|
20
|
||||||
12
|
12
|
||||||
00
|
00
|
||||||
03
|
03
|
||||||
a5
|
25
|
||||||
02
|
02
|
||||||
00
|
00
|
||||||
b7
|
b7
|
||||||
@@ -59,9 +59,13 @@ ff
|
|||||||
00
|
00
|
||||||
00
|
00
|
||||||
63
|
63
|
||||||
92
|
94
|
||||||
41
|
41
|
||||||
00
|
00
|
||||||
|
00
|
||||||
|
00
|
||||||
|
00
|
||||||
|
00
|
||||||
ef
|
ef
|
||||||
06
|
06
|
||||||
40
|
40
|
||||||
|
Reference in New Issue
Block a user