Соответсвие мнемоник ассемблера
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 лучше бы не подменять. Есть в них определённая фишка. Лучше поправить ассемблер, чтобы он их корректно определял. Это нетривиально, но можно сделать.