ПО, ЭВМ и АСУ из Таможенного Союза

Информация о пользователе

Привет, Гость! Войдите или зарегистрируйтесь.


Вы здесь » ПО, ЭВМ и АСУ из Таможенного Союза » Проект "Виртуальные машины" » Определить независимый набор базовых инструкций.


Определить независимый набор базовых инструкций.

Сообщений 1 страница 10 из 10

1

Кнут, для того, чтобы не связываться с реальными процессорами заопределил свой собственный ассемблер (даже два).
Да и вообще идея промежуточного кода (типа пи-кода, java-вского байткода, Python, Go - много в общем их) существует с 1966 года (52 года).
А раз их много - как-то не приходила идея написать ещё один. А, похоже, зря не приходила.

0

2

Конечно, не приходила. Никто же псевдокод до Вас не придумал. Изобретать велосипеды это наше все.

0

3

Вот какие мысли по первому этапу... Для нашей первичной идеи - регистровой виртуальной машины для компилятора нужна система команд. Нужно или что-то позаимствовать или изобрести своё. Предлагаю взять за основу подмножество из набора команд RISС-V и их систему кодирования.
Нужно только красиво перевести все команды.

0

4

Набор команд RISС-V.

Код:
RV32I Base Instruction Set
LUI
AUIPC
JAL
JALR
BEQ
BNE
BLT
BGE
BLTU
BGEU
LB
LH
LW
LBU
LHU
SB
SH
SW
ADDI
SLTI
SLTIU
XORI
ORI
ANDI
SLLI
SRLI
SRAI
ADD
SUB
SLL
SLT
SLTU
XOR
SRL
SRA
OR
AND
FENCE
ECALL
EBREAK
Volume I: RISC-V Unprivileged ISA V20191213 131
31 27 26 25 24 20 19 15 14 12 11 7 6 0
funct7 rs2 rs1 funct3 rd opcode R-type
imm[11:0] rs1 funct3 rd opcode I-type
imm[11:5] rs2 rs1 funct3 imm[4:0] opcode S-type
RV64I Base Instruction Set (in addition to RV32I)
LWU
LD
SD
SLLI
SRLI
SRAI
ADDIW
SLLIW
SRLIW
SRAIW
ADDW
SUBW
SLLW
SRLW
SRAW
RV32/RV64 Zifencei Standard Extension
imm[11:0] rs1 001 rd 0001111 FENCE.I
RV32/RV64 Zicsr Standard Extension
CSRRW
CSRRS
CSRRC
CSRRWI
CSRRSI
CSRRCI
RV32M Standard Extension
MUL
MULH
MULHSU
MULHU
DIV
DIVU
REM
REMU
RV64M Standard Extension (in addition to RV32M)
MULW
DIVW
DIVUW
REMW
REMUW
132 Volume I: RISC-V Unprivileged ISA V20191213
31 27 26 25 24 20 19 15 14 12 11 7 6 0
funct7 rs2 rs1 funct3 rd opcode R-type
RV32A Standard Extension
LR.W
SC.W
AMOSWAP.W
AMOADD.W
AMOXOR.W
AMOAND.W
AMOOR.W
AMOMIN.W
AMOMAX.W
AMOMINU.W
AMOMAXU.W
RV64A Standard Extension (in addition to RV32A)
LR.D
SC.D
AMOSWAP.D
AMOADD.D
AMOXOR.D
AMOAND.D
AMOOR.D
AMOMIN.D
AMOMAX.D
AMOMINU.D
AMOMAXU.D
Volume I: RISC-V Unprivileged ISA V20191213 133
31 27 26 25 24 20 19 15 14 12 11 7 6 0
funct7 rs2 rs1 funct3 rd opcode R-type
rs3 funct2 rs2 rs1 funct3 rd opcode R4-type
imm[11:0] rs1 funct3 rd opcode I-type
imm[11:5] rs2 rs1 funct3 imm[4:0] opcode S-type
RV32F Standard Extension
FLW
FSW
FMADD.S
FMSUB.S
FNMSUB.S
FNMADD.S
FADD.S
FSUB.S
FMUL.S
FDIV.S
FSQRT.S
FSGNJ.S
FSGNJN.S
FSGNJX.S
FMIN.S
FMAX.S
FCVT.W.S
FCVT.WU.S
FMV.X.W
FEQ.S
FLT.S
FLE.S
FCLASS.S
FCVT.S.W
FCVT.S.WU
FMV.W.X
RV64F Standard Extension (in addition to RV32F)
FCVT.L.S
FCVT.LU.S
FCVT.S.L
FCVT.S.LU
134 Volume I: RISC-V Unprivileged ISA V20191213
31 27 26 25 24 20 19 15 14 12 11 7 6 0
funct7 rs2 rs1 funct3 rd opcode R-type
rs3 funct2 rs2 rs1 funct3 rd opcode R4-type
imm[11:0] rs1 funct3 rd opcode I-type
imm[11:5] rs2 rs1 funct3 imm[4:0] opcode S-type
RV32D Standard Extension
imm[11:0] rs1 011 rd 0000111 FLD
imm[11:5] rs2 rs1 011 imm[4:0] 0100111 FSD
FMADD.D
FMSUB.D
FNMSUB.D
FNMADD.D
FADD.D
FSUB.D
FMUL.D
FDIV.D
FSQRT.D
FSGNJ.D
FSGNJN.D
FSGNJX.D
FMIN.D
FMAX.D
FCVT.S.D
FCVT.D.S
FEQ.D
FLT.D
FLE.D
FCLASS.D
FCVT.W.D
FCVT.WU.D
FCVT.D.W
FCVT.D.WU
RV64D Standard Extension (in addition to RV32D)
FCVT.L.D
FCVT.LU.D
FMV.X.D
FCVT.D.L
FCVT.D.LU
FMV.D.X
Volume I: RISC-V Unprivileged ISA V20191213 135
31 27 26 25 24 20 19 15 14 12 11 7 6 0
funct7 rs2 rs1 funct3 rd opcode R-type
rs3 funct2 rs2 rs1 funct3 rd opcode R4-type
imm[11:0] rs1 funct3 rd opcode I-type
imm[11:5] rs2 rs1 funct3 imm[4:0] opcode S-type
RV32Q Standard Extension
FLQ
FSQ
FMADD.Q
FMSUB.Q
FNMSUB.Q
FNMADD.Q
FADD.Q
FSUB.Q
FMUL.Q
FDIV.Q
FSQRT.Q
FSGNJ.Q
FSGNJN.Q
FSGNJX.Q
FMIN.Q
FMAX.Q
FCVT.S.Q
FCVT.Q.S
FCVT.D.Q
FCVT.Q.D
FEQ.Q
FLT.Q
FLE.Q
FCLASS.Q
FCVT.W.Q
FCVT.WU.Q
FCVT.Q.W
FCVT.Q.WU
RV64Q Standard Extension (in addition to RV32Q)
FCVT.L.Q
FCVT.LU.Q
FCVT.Q.L
FCVT.Q.LU

0

5

Ты смешиваешь две цели:
1) сэмулировать архитектуру Risc-V на бинарном уровне _ТОЧНО_, но при этом создать к кодам кириллические мнемоники
2) сделать свою архитектуру, потому что хочется побыть архитектором и взвешено выбрать самые крутые решения из всех машин мира.

В нашей машине есть 2 архитктуры - Евгений и Интел64.
Risc-V мы эмулировать на первом этапе не собирались

Если ты как архитектор видишь там что-то интересное, то бери оттуда, конечно, ведь это твоя архитектура,
тебе её дизайнить. (если это не нарушает лицензий, поэтому команды MMIX надо брать из книги Кнута, а не из той реализации на C++ без лицензии)

Отредактировано Лис (2023-03-26 20:03:53)

0

6

Евгений написал(а):

Набор команд RISС-V

В этом списке синуса не вижу. А в списке команд Интел64 - вижу.

0

7

Лис написал(а):

В этом списке синуса не вижу. А в списке команд Интел64 - вижу.

Похоже сопроцессор архитектуры RISС-V не поддерживает реализацию синуса в "железе".

0

8

Евгений написал(а):

Похоже сопроцессор архитектуры RISС-V не поддерживает реализацию синуса в "железе".

В моей части Интел64 синусы нужны (потом, когда-нибудь, в светлом будущем, когда дело дойдёт до IDE и "исполнителя черепаха"), а ты в своей части - как хочешь.

0

9

Лис написал(а):

Евгений написал(а):

    Похоже сопроцессор архитектуры RISС-V не поддерживает реализацию синуса в "железе".

В моей части Интел64 синусы нужны (потом, когда-нибудь, в светлом будущем, когда дело дойдёт до IDE и "исполнителя черепаха"), а ты в своей части - как хочешь.

В обсуждении и рождается оптимальный вариант. 32 бита на команду не резиновые, и нужно выбрать оптимальный вариант. Но я согласен с тем, что ВМ для компилятора должна иметь основные
математические функции. А вот реализовать их можно по-разному.  Есть команда CALL например.

0

10

Евгений написал(а):

32 бита на команду не резиновые

Но и не догма. У Кнута есть байт удлинения (пока зарезервированный), так что у него команды переменной длины.
Вообще он крутой, сел в 1999-м году и вкатал 256 регистров. Сейчас, через 25 лет, регистров как раз столько, что в Эльбрусе, что в Интел64 (только они "скрытые").
Тоже надо так, угадать, какими будут процессоры через 25+ лет. Может быть посмотреть, чем там занимаются сопроцессоры для нейросетей?

Отредактировано Лис (2023-03-27 00:26:12)

0


Вы здесь » ПО, ЭВМ и АСУ из Таможенного Союза » Проект "Виртуальные машины" » Определить независимый набор базовых инструкций.