мнемоники
целочисленные арифметические
ЦСУМ
ЦРАЗ
ЦУМН
ЦДЕЛ
ЦСУМЗ
ЦРАЗЗ
ЦУМНЗ
ЦДЕЛЗ
ЦОСТ - остаток
ЦОСТЗ - остаток для знаковых
Научный формат (с плавающей точкой)
НСУМ
НРАЗ
НУМН
НДЕЛ
НСУМЗ
НРАЗЗ
НУМНЗ
НДЕЛЗ
НОСТ - остаток
НОСТЗ - остаток для знаковых
мнемоники (логические):
ЛСУМ - логическое суммирование
ЛУМН - логическое умножение
ЛОТР - логическое отрицание
ЛИСК - логическое исключение (исключающее или)
мнемоники (сдвиги):
СДЛ - сдвиг влево
СДП - сдвиг вправо
СДЛЦ - сдвиг влево циклический
СДПЦ - сдвиг вправо циклический
СДЛЗ - сдвиг влево знаковый (знак сохраняется, число удваивается)
СДПЗ - сдвиг вправо знаковый (знак сохраняется, число уполовинивается)
СДПЗР - сдвиг вправо знаковый (знак размножается, число уполовинивается)
Только команды переходов. Зачем нужны проверки сами-по-себе?
УА - уйти на адрес
УР - уйти взяв адрес из регистра
УАПБ, УРПБ
УАПМ, УРПМ
УАПР, УРПР
УАПС, УРПС
УАПH, УРПH
УАПП, УРПП
- уйти при выполнении условия
/*
ПБ - проверка больше
ПМ - проверка меньше
ПР - проверка разницы
ПС - проверка совпадения
ПН - проверка на ничто
ПП - проверка на не́что
*/
Команды вызова (не проверяют условия) - начать подпрограмму
ВЫЗА - вызов по адресу
ВЫЗР - вызов по регистру
ВОЗ - возврат
СИСТ - вызов операционной системы
Допустим я придумал такой вариант, а у тебя уже есть другой.
И теперь мы потратим пару месяцев в обсуждениях как переделать?
Или не будем заниматься фигнёй и будем пользоваться тем что есть?
Лис, где синус?
НСИН - научный формат, синус
НКОС - научный формат, косинус
НТАН - научный формат, тангенс
НАРК - научный формат, арккосинус
НСТЕ - научный формат, степень
НКОР - научный формат, корень
НЛОГ - научный формат, логарифм
НЭКС - научный формат, экспонента
Лис, а как будешь в калькуляторе в отрицательную дробную степень возводить без комплексных чисел?
КСИН (ЙСИН) - комплексные числа, синус
ККОС (ЙКОС) - комплексные числа, косинус
КТАН (ЙТАН) - комплексные числа, тангенс
КАРК (ЙАРК) - комплексные числа, арккосинус
КСТЕ (ЙСТЕ) - комплексные числа, степень
ККОР (ЙКОР) - комплексные числа, корень
КЛОГ (ЙЛОГ) - комплексные числа, логарифм
КЭКС (ЙЭКС) - комплексные числа, экспонента
Или можно букву Й ставить первой, использовать её для обозначения мнимой части
(потому что буква К может пригодиться в каких-нибудь других инструкциях. Полезная часто употребимая буква, эта 'К')
Как данные перемещаются между памятью и регистрами?
ДПР - двигаем память в регистр
ДРП - двигаем регистр в память
ДППРЙ - двигаем память в пару регистров (для комплексных чисел)
ДРЙПП - двигаем пару регистров в память (для комплексных чисел)
Ещё может быть несколько режимов адресации? Ну, чтобы не только по фиксированным адресам размещать.
ДПМР - режим адресации для работы с массивами
ДРПМ
так-то эти команды вроде бы и не нужны, адреса можно повычислять отдельными командами
ДАПР - LEA (двигаем адрес памяти в регистр)
ДАПМР (то же самое для адресации с массивами)
А данные ты, Лис, собираешься сохранять в стеке? Или всё в ку́че?
А вот! Сначала объясните зачем в стеке нужны данные.
1) Передавать параметры в функцию?
Давно такое через регистры делают, регистров достаточно много стало.
2) Ну, там, а автоматическая очистка компилятором локальных переменных, он может вычислить количество и сразу их все очистить при выходе из подпрограммы?
Ну, компилятор может это вычислить и для кучи, и второй стек может сам вести.
3) Но управление памятью в куче сложное!
Ну так всё равно надо будет его делать, ведь плохо, когда память не используется, вот пусть компилятор и мучается.
4) Ну хотя бы снять адрес со стека можно, чтобы не возвращаться туда, откуда вызывали?
А зачем такие хаки. Ну, можно поместить новое значение в регистр стека командой загрузки регистра (прибавить 8 байтов, например)...
ДРС - двигать из регистра стек
ДСР - двигать из стека в регистр
ДРЙСС - двигать из регистра стек комплексное число
ДССРЙ - двигать из стека в регистр комплексное число
Совершенно очевидно, что понять, как именно должны работать чужие мнемоники
невозможно без их детального описания.
Отредактировано Лис (2023-04-19 07:41:16)