Кнут, для того, чтобы не связываться с реальными процессорами заопределил свой собственный ассемблер (даже два).
Да и вообще идея промежуточного кода (типа пи-кода, java-вского байткода, Python, Go - много в общем их) существует с 1966 года (52 года).
А раз их много - как-то не приходила идея написать ещё один. А, похоже, зря не приходила.
Определить независимый набор базовых инструкций.
Сообщений 1 страница 10 из 10
Поделиться12018-11-18 08:27:33
Поделиться22018-11-18 09:43:02
Конечно, не приходила. Никто же псевдокод до Вас не придумал. Изобретать велосипеды это наше все.
Поделиться32023-03-26 19:45:41
Вот какие мысли по первому этапу... Для нашей первичной идеи - регистровой виртуальной машины для компилятора нужна система команд. Нужно или что-то позаимствовать или изобрести своё. Предлагаю взять за основу подмножество из набора команд RISС-V и их систему кодирования.
Нужно только красиво перевести все команды.
Поделиться42023-03-26 20:00:32
Набор команд 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
Поделиться52023-03-26 20:02:43
Ты смешиваешь две цели:
1) сэмулировать архитектуру Risc-V на бинарном уровне _ТОЧНО_, но при этом создать к кодам кириллические мнемоники
2) сделать свою архитектуру, потому что хочется побыть архитектором и взвешено выбрать самые крутые решения из всех машин мира.
В нашей машине есть 2 архитктуры - Евгений и Интел64.
Risc-V мы эмулировать на первом этапе не собирались
Если ты как архитектор видишь там что-то интересное, то бери оттуда, конечно, ведь это твоя архитектура,
тебе её дизайнить. (если это не нарушает лицензий, поэтому команды MMIX надо брать из книги Кнута, а не из той реализации на C++ без лицензии)
Отредактировано Лис (2023-03-26 20:03:53)
Поделиться62023-03-26 20:12:15
Набор команд RISС-V
В этом списке синуса не вижу. А в списке команд Интел64 - вижу.
Поделиться72023-03-26 20:52:16
В этом списке синуса не вижу. А в списке команд Интел64 - вижу.
Похоже сопроцессор архитектуры RISС-V не поддерживает реализацию синуса в "железе".
Поделиться82023-03-26 21:02:49
Похоже сопроцессор архитектуры RISС-V не поддерживает реализацию синуса в "железе".
В моей части Интел64 синусы нужны (потом, когда-нибудь, в светлом будущем, когда дело дойдёт до IDE и "исполнителя черепаха"), а ты в своей части - как хочешь.
Поделиться92023-03-26 21:24:48
Евгений написал(а):
Похоже сопроцессор архитектуры RISС-V не поддерживает реализацию синуса в "железе".
В моей части Интел64 синусы нужны (потом, когда-нибудь, в светлом будущем, когда дело дойдёт до IDE и "исполнителя черепаха"), а ты в своей части - как хочешь.
В обсуждении и рождается оптимальный вариант. 32 бита на команду не резиновые, и нужно выбрать оптимальный вариант. Но я согласен с тем, что ВМ для компилятора должна иметь основные
математические функции. А вот реализовать их можно по-разному. Есть команда CALL например.
Поделиться102023-03-26 23:57:46
32 бита на команду не резиновые
Но и не догма. У Кнута есть байт удлинения (пока зарезервированный), так что у него команды переменной длины.
Вообще он крутой, сел в 1999-м году и вкатал 256 регистров. Сейчас, через 25 лет, регистров как раз столько, что в Эльбрусе, что в Интел64 (только они "скрытые").
Тоже надо так, угадать, какими будут процессоры через 25+ лет. Может быть посмотреть, чем там занимаются сопроцессоры для нейросетей?
Отредактировано Лис (2023-03-27 00:26:12)