besm6 / micro-besm

Replica of micro-BESM computer

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Соответсвие мнемоник ассемблера

x86128 opened this issue · comments

По содержимому файла toolchain/as/as.c составил таблицу обозначений мнемоник ассемблера на русском и английском языке:

opcode mnemonic mnemonic mnemonic
0000000 зп зч atx
0100000 зм зпм stx
0200000 сн счн xtna
0300000 см счм xts
0400000 ас сл aadx
0500000 ав вч asux
0600000 вчоб ов xsa
0700000 вчаб мв amsx
0800000 сч xta
0900000 и лу aax
0a00000 нтж ср aex
0b00000 слк цс arx
0c00000 из avx
0d00000 или лс aox
0e00000 ад дел adx
0f00000 ау умн amux
1000000 сбр сб apkx
1100000 рб рзб aux
1200000 чед acx
1300000 вн нед anx
1400000 слпп сп eax
1500000 вп вчпп esx
1600000 сдпп ск asrx
1700000 рк уржп xtr
1800000 пб uj xj
1900000 пв vjm
1a00000 уц циклу vgm
1b00000 кц цикл vlm
1e00000 ок сдлп alx
2000000 ир пирв vzm
2100000 ин пинр vim
2200000 ибр пибр vpzm
2300000 име пимн vnm
2400000 имр пимр vnzm
2500000 иб пибл vpm
2800000 прв uz xz
2900000 пнр ун ui
2a00000 пбр убр upz
2b00000 пмн уме un
2c00000 пмр умр unz
2d00000 пбл убл up
2e00000 пос ус uiv
2f00000 пно унс uzv
3000000 ст счт xtga
3100000 сем сс xtqa
3200000 сх счх xtha
3300000 счк тс xtta
3400000 зн зпн ztx
3500000 зк зпк atcx
3600000 зпх зх ath
3700000 зпт зт atgx
3800000 где уа pctm
3900000 ка пфс atc
3a00000 пфа utcs xtpc
3b00000 ик пф wtc
3c00000 па уиа vtm
3d00000 са слиа utm
3e00000 груп уг do
3f00000 эк ex
3f01000 вт выт pop
3f02000 врг чр rmod
3f03000 вых ij
3f06000 зр ург wmod
3f07000 ост стоп halt
3f11000 вдп мм yma
3f14000 кор кп ecn
3f16000 сдп сд asn
3f18000 врж rta
3f19000 вд мр yta
3f1a000 нс нтжп een
3f1b000 упр уп set
3f1c000 кс слп ean
3f1d000 вчп кв esn
3f1e000 од сдл aln
3f1f000 ра урж ntr
3f20000 уи ati
3f21000 уим ум sti
3f22000 ви ita
3f23000 виц вц iita
3f24000 пи уии mtj
3f25000 си сли jam
3f26000 вчиоб ми msj
3f27000 вчи им jsm
3f28000 иу ур ato
3f29000 му урм sto
3f2a000 вр ив ota
3f2c000 ип ури mto
3f34000 ца цела ent
3f35000 целф цф int
3f36000 мд сдпд asy
3f38000 кч уисч atia
3f3c000 инв пд aca
3f3e000 рд сдлд aly
3f3f000 лог уу tst
3f51000 вдпм ммм yms
3f54000 корм кпм ecns
3f56000 сдм сдпм asns
3f58000 вржм rts
3f59000 вдм мрм yts
3f5a000 нсм нтжпм eens
3f5c000 ксм слпм eans
3f5d000 вчпм квм esns
3f5e000 одм сдлм alns
3f5f000 рам уржм ntrs
3f62000 вим its
3f63000 вицм вцм iits
3f6a000 врм ивм ots
3f74000 цам целам ents
3f75000 целфм цфм ints
3f76000 мдм сдпдм asys
3f78000 кчм уисчм atis
3f7c000 инвм пдм acs
3f7e000 рдм сдлдм alys
3f7f000 логм уум tsts
4000000 счц xtal
4100000 смц счцм xtsl
4200000 снц счнц utra
4300000 смл счлм uts
4400000 асц слц aadu
4500000 авц вчц asuu
4600000 вчобц овц usua
4700000 вчабц мвц amu
4800000 счл uta xtau
4900000 ил лул aau
4a00000 нтжл срл aeu
4b00000 слкл цсл aru
4c00000 изц avu
4d00000 илил лсл aou
4f00000 аул умнц amuu
5000000 сбл сбрл apu
5100000 рбл рзбл auu
5200000 вчл чедл acu
5300000 внл недл anu
5400000 асф слф
5500000 авф вчф
5600000 вчобф овф
5700000 вчабф мвф
5c00000 изф
5f00000 ауф умнф
6000000 зп. зчк atk
6100000 змк зпм. stk
6200000 снк счн. ktra
6300000 смк счм. kts
6400000 аск сл. aadk
6500000 авк вч. asuk
6600000 вчоб. овк ksua
6700000 вчаб. мвк amk
6800000 сч. kta
6900000 и. лук aak
6a00000 нтж. срк aek
6b00000 слк. цск ark
6c00000 изк из. avk
6d00000 или. лск aok
6e00000 адк дел. adk
6f00000 аук умн. amuk
7000000 сбк сбр. apk
7100000 рбк. рзб. auk
7200000 вчк чед. ack
7300000 внк нед. ank
7400000 слпп. спк eak
7500000 впк вчпп. esk
7600000 сдпп. скк ask
7800000 стк счт. ktga
7900000 сем. сск ktsa
7a00000 схк счх. ktha
7b00000 счк. тск ktta
7c00000 знк зпн. ztk
7d00000 зкк зпк. atck
7e00000 окк сдлп. alk
7f00000 зпт. зтк atgk

На английском языке есть обозначения не для всех команд. Их в микро-БЭСМ не было? Или этот компилятор немного для другой машины?

Это другая машина: Эльбрус-Б. Разаботчики микро-БЭСМ и Эльбруса-Б согласовывали таблицы кодов команд, но за полную совместимость не боролись. Эти машины похожие, но не одинаковые. Полный список команд именно микро-БЭСМ находится в файле: https://github.com/besm6/micro-besm/blob/master/doc/opcodes/native.json

Сгенерировал по этим json таблицы для инструкций для основного режима и режима БЭСМ6.

Основной режим:

ext priv opcode name brief
E 00 EXTC экстракод
01 STX запись числа магазинная
03 XTS считывание магазинное
08 XTA считывание числа
09 AAX логическое умножение
0A AEX сравнение
0B ARX циклическое сложение
0D AOX логическое сложение
0E A/X деление с плавающей запятой
10 APX сборка по маске
11 AUX разборка по маске
12 ACX выдача числа единиц
13 ANX выдача номера старшей единицы
14 E+X сложение порядка с кодом
15 E-X вычитание из порядка кода
E 16 ASN сдвиг логический по адресу
18 JMP безусловный переход
19 VJM переход с возвратом
1B VLM конец цикла с увеличением значения модификатора
E 1C E+N сложение порядка с адресом
E 1D E-N вычитание из порядка адреса
E 20 ATI запись кода в модификатор
E 21 STI запись кода в модификатор магазинная
E 22 ITS выдача модификатора магазинная
23 JMLT переход, если модификатор меньше '0'
E 24 MTJ передача из модификатора в модификатор
E 25 J+M сложение модификаторов
E 27 J-M вычитание модификаторов
3B WTC префиксация кодом
3C VTM установка адреса на модификатор
3D UTM сложение модификатора с адресом
43 UTS загрузка адреса в сумматор магазиннная
48 UTA выдача исполнительного адреса
49 AAU логическое умножение сумматора
4A AEU сравнение сумматора
4D AOU логическое сложение
52 ACU выдача числа единиц
53 ANU выдача номера старшей единицы
E 80 ITA выдача модификатора
E 81 YTA выдача регистра младших разрядов
E 82 NTR установка РР по адресу
E 83 RTE выдача РР
E 84 AAY логическое умножение с РМР
E 85 AEY сравнение сумматора с РМР
E 86 AOY логическое сложение сумматора и РМР
E 87 RETSZ возврат из подпрограммы на левую команду
E 88 RETS возврат из подпрограммы
E 90 MCJ обмен содержимого модификаторов
E 91 MSN арифметический сдвиг модификатора
E 94 MPAC упаковка модификаторов
E 95 MUNP распаковка модификаторов
E 96 ASNA сдвиг арифметический целого слова по адресу
97 YOX логическое сложение с РМР
98 YTX запись РМР в память
99 A+L сложение арифметическое
9A A-L вычитание арифметическое
9B L-A обратное вычитание
9E A/L деление целочисленное
9F A*L умножение целочисленное
A0 VTMH установка адреса полуслова на модификатор
E A1 EXTF размножение заданного бита А влево
E A2 A+I арифметич.сложение с модификатором
E A3 A-I арифметич. Вычитание модификатора
E A4 I-A обратное вычитание модификатора
E A7 A/I деление целочисленное
E A8 A*I умножение целочисленное
E A9 AAI логическое умножение
E AA AEI сравнение
E AB AOI логическое сложение
AC JOVR условный переход при переполнении
AD JCRY условный переход при переносе
AE JAGT переход, если сумматор больше 0
AF JAGE переход,если сумматор больше или равен 0
E B0 NTA установка бита сумматора в '1'
E B1 NTS установка бита магазинная
E B2 AEN сравнение
E B3 AAN логическое умножение
E B4 AON логическое сложение
B5 JMPS переход к подпрограмме
B6 ATH запись полуслова в память
B7 STH запись полуслова магазинная
B8 HTA чтение полуслова из памяти
B9 HTS чтение полуслова магазинное
BA A+H арифметическое сложение с полусловом
BB A-H арифметическое вычитание полуслова
BC H-A обратное вычитание
BF A/H деление целочисленное
C0 A*H умножение целочисленное
C1 AAH логическое умножение
C2 AEH сравнение
C3 AOH логическое сложение
C4 ATQ запись в память
C5 STQ запись в память магазинная
C6 QTA чтение из памяти
C7 QTS чтение из памяти магазинное
C8 AEQ сравнение
C9 AAQ логическое умножение
CA AOQ логическое сложение
CB ATB запись байта
CC STB запись байта магазинная
CD BTA чтение байта
CE BTS чтение байта магазинное
CF AEB сравнение с байтом
D0 AAB логическое умножение на байт
D1 AOB логическое сложение с байтом
D2 ATF запись бита в память
D3 STF запись бита в память магазинная
D4 FTA чтение бита из памяти
D5 FTS чтение бита магазинное
D6 AEF сравнение
D7 AAF логическое умножение
D8 AOF логическое сложение
D9 SETF установка бита в '1' по исп.адресу памяти
DA CLRF установка бита в '0' по исп.адресу памяти
DB XTR установка РР по коду
DC ATD запись сумматора и РМР в память
DD DTA чтение двойного слова в сумматор и РМР
E5 A+X арифметическое сложение чисел с плавающей запятой
E6 A-X арифметическое вычитание чисел с плавающей запятой
E7 X-A обратное вычитание чисел с плавающей запятой
E8 AMX вычитание модулей чисел с плавающей запятой
E9 AVX изменение знака числа на сумматоре
EA A*X умножение с плавающей запятой
EB UZA условный переход 'по нулю'
EC UIA условный переход 'по не нулю'
P F0 RMOD чтение специальных регистров
P F1 WMOD запись в специальные регистры
P F2 SETR установка РР адресом
P F3 CLRR гашение РР адресом
P F4 SEMR семафорное чтение
P F5 TTX запись сумматора с заданным тегом
P F6 TTA чтение с тегом
P F7 SEMW семафорная запись
P F8 SMON захват глобального семафора
P F9 CMON освобождение глобального семафора
P FD IJP возврат из прерывания
E P FE RET возврат из экстракода
E P FF HLT останов

Режим совместимости БЭСМ6:

ext priv opcode name brief
E 000 ATX запись сумматора в память
E 001 STX запись числа магазинная
E 003 XTS считывание магазинное
E 004 A+X арифметическое сложение чисел с плавающей запятой
E 005 A-X арифметическое вычитание чисел с плавающей запятой
E 006 X-A обратное вычитание чисел с плавающей запятой
E 007 AMX вычитание модулей чисел с плавающей запятой
E 010 XTA считывание числа
E 011 AAX логическое умножение
E 012 AEX сравнение
E 013 ARX циклическое сложение
E 014 AVX изменение знака числа на сумматоре
E 015 AOX логическое сложение
E 016 A/X деление с плавающей запятой
E 017 A*X умножение с плавающей запятой
E 020 APX сборка по маске
E 021 AUX разборка по маске
E 022 ACX выдача числа единиц
E 023 ANX выдача номера старшей единицы
E 024 E+X сложение порядка с кодом
E 025 E-X вычитание из порядка кода
E 026 ASX сдвиг логический по коду
E 027 XTR установка РР по коду
E 030 RTE выдача РР
E 031 YTA выдача регистра младших разрядов
E 034 E+N сложение порядка с адресом
E 035 E-N вычитание из порядка адреса
E 036 ASN сдвиг логический по адресу
E 037 NTR установка РР по адресу
E 040 ATI запись кода в модификатор
E 041 STI запись кода в модификатор магазинная
E 042 ITA выдача модификатора
E 043 ITS выдача модификатора магазинная
E 044 MTJ передача из модификатора в модификатор
E 045 J+M сложение модификаторов
22 UTC префиксация адресом
23 WTC префиксация кодом
24 VTM установка адреса на модификатор
25 UTM сложение модификатора с адресом
26 UZA условный переход 'по нулю' сумматора
27 U1A условный переход 'по не нулю' сумматора
30 UJ безусловный переход
31 VJM переход с возвратом
34 VZM условный переход по нулю модификатора
35 V1M условный переход по не нулю модификатора
37 VLM конец цикла с увеличением значения модификатора

Есть ли какие-то общепринятые замены для мнемоник типа J+M A/X и т.д. на содержащие только цифры?

Отлично!
Мнемоники с символами типа J+M A/X лучше бы не подменять. Есть в них определённая фишка. Лучше поправить ассемблер, чтобы он их корректно определял. Это нетривиально, но можно сделать.