Вчера, засыпая, отправил не в тот тред. На всякий случай повторюсь:
Ускоренные умножения и деления, вдруг пригодится:
http://www.cirsovius.de/CPM/Projekte...IV/MULDIV.html
Вчера, засыпая, отправил не в тот тред. На всякий случай повторюсь:
Ускоренные умножения и деления, вдруг пригодится:
http://www.cirsovius.de/CPM/Projekte...IV/MULDIV.html
Больше игр нет
Реализовал break, continue, return, switch, default, do {} while, union, typedef, extern, sizeof. Реализовано описание внешних функций и переменных. Функции сравнения + перехода оптимизированы. Реализован #define
---
Осталось:
Оптимизировать умножение и деление на константу.
Switch - это пока просто последовательность if, т.е. без таблицы переходов
Вставки ассемблера не реализованы.
Препроцессор не реализован: #include, #ifdef, #ifndef, #endif
Инициализации статических переменных нет Например: char data[] = { 0x10, 0x20 }; FileInfo files[] = { { "abc", 1 }, { "def", 2 } };
Контроля рекурсии нет и необходимый размер стека не определяется.
Сделать постоптимизатор ассемблера, который в том числе будет переводить программу в мненоники 8080, комплировать в BIN файл.
Режима стековых переменных нет.
Последний раз редактировалось vinxru; 17.09.2012 в 16:01.
В структурах нельзя будет описывать многомерные массивы. В моём компиляторе двухмерный массив - это массив указателей на одномерные массивы.
int a[5][10] - это
int* a[5];
int b[50];
a[0] = b;
a[1] = b+10;
a[2] = b+20;
a[3] = b+30;
a[4] = b+40;
Еще не сделал вычитание указателя из указателя. И с преобразованием типов не все впорядке.
---------- Post added at 12:01 ---------- Previous post was at 11:57 ----------
Так же в этой документации описано, что перед любой арифметической операцией надо 8 битные типы данных приводить к 16 битным.
в моем же случае любая операция между 8 битными значениями даст 8 битный результат. Кроме умножения, оно дает 16 бит.
А любое сравнение или операция НЕ дает 8 битный результат.
Последний раз редактировалось vinxru; 17.09.2012 в 15:25.
Команда XTHL пригодилась.
С любовью к вам, Yandex.Direct
Размещение рекламы на форуме способствует его дальнейшему развитию
На команде загрузить в HL значение с верхушки стека. Но перед тем как использовать HL, надо его прошлое значение сохранить в стек.
Что то типа
POP DE
PUSH HL
EX HL, DE
И даже команда DEC SP пригодилась. Для варианта
PUSH DE
...
INC SP
POP AF
DEC SP
Последний раз редактировалось vinxru; 18.09.2012 в 12:01.
Сейчас сказать не могу.
Ради отладки компилятора переписал с JS игру. Почти полностью на Си.
![]()
Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)