Появится регистр H, означающий старшие 16 бит результата L (может оказаться полезным например при умножении).
Также появится возможность использовать функции - они будут преобразовываться в вызов подпрограмм препроцессором. Например:
res=2+fun1(2,3)/fun2(4)
преобразуется препроцессором в
A=2;B=3;CALL fun1;_1=L
A=4;CALL fun2;_2=L
res=2+_1/_2
[RW1] Улучшения в новой версии компилятора ROBBYC
Moderator: Shaos
-
Shaos
- Admin
- Posts: 25244
- Joined: 08 Jan 2003 23:22
- Location: Silicon Valley
[RW1] Улучшения в новой версии компилятора ROBBYC
Last edited by Shaos on 11 Sep 2012 23:32, edited 1 time in total.
-
Shaos
- Admin
- Posts: 25244
- Joined: 08 Jan 2003 23:22
- Location: Silicon Valley
Готовится новая версия 2.2.0 компилятора RW1C. Уже реализовано:
- поддержка нового регистра H;
- возможность вызова процедур без аргументов (раньше для препроцессора обязательно надо было писать хотя бы один параметр-заглушку);
- вывод ошибки дублирования метки в случае если метка с повторным именем определена после ее использования (этот случай рассматривался в v1.x, но был упущен в v2.0 и v2.1).
Осталось реализовать функции (как указано выше) и можно выпускать новую версию
P.S. Добавлено в ноябре 2005: Реализация функций подождет - а все остальное плюс еще несколько фиксов войдут в ближайшую версию компилятора под номером 2.1.3
- поддержка нового регистра H;
- возможность вызова процедур без аргументов (раньше для препроцессора обязательно надо было писать хотя бы один параметр-заглушку);
- вывод ошибки дублирования метки в случае если метка с повторным именем определена после ее использования (этот случай рассматривался в v1.x, но был упущен в v2.0 и v2.1).
Осталось реализовать функции (как указано выше) и можно выпускать новую версию
P.S. Добавлено в ноябре 2005: Реализация функций подождет - а все остальное плюс еще несколько фиксов войдут в ближайшую версию компилятора под номером 2.1.3
-
Shaos
- Admin
- Posts: 25244
- Joined: 08 Jan 2003 23:22
- Location: Silicon Valley
RW1C v2.1.3
1 декабря 2005 года
shaos.ru/pub/rw1c.zip (133K)
RW1C v2.1.3 (29 Nov 2005)
- поддержка нового регистра H (адрес 0xFF1E) обозначающего старшее слово результата
- исправлена ошибка дублирования метки
- возможность вызова процедур без аргументов не используя CALL
- максимальная длина строки программы теперь 1024 символа
- исправление падения программы при индексировании массива несуществующей переменной
- теперь определение макросов допускается только до метки START или снаружи функций
- исключено удаление пробелов из описания макроса
- разделение исходника на несколько файлов
- подправлен текст лицензионного соглашения к исходным текстам
Файлы которые можно скачать отдельно:
shaos.ru/pub/rw1c_dos.zip (26K)
shaos.ru/pub/rw1c_linux.zip (27K)
shaos.ru/pub/rw1c_src.zip (26K)
Способы сборки компилятора на разных платформах и разными компиляторами:
shaos.ru/pub/rw1c.zip (133K)
RW1C v2.1.3 (29 Nov 2005)
- поддержка нового регистра H (адрес 0xFF1E) обозначающего старшее слово результата
- исправлена ошибка дублирования метки
- возможность вызова процедур без аргументов не используя CALL
- максимальная длина строки программы теперь 1024 символа
- исправление падения программы при индексировании массива несуществующей переменной
- теперь определение макросов допускается только до метки START или снаружи функций
- исключено удаление пробелов из описания макроса
- разделение исходника на несколько файлов
- подправлен текст лицензионного соглашения к исходным текстам
Файлы которые можно скачать отдельно:
shaos.ru/pub/rw1c_dos.zip (26K)
shaos.ru/pub/rw1c_linux.zip (27K)
shaos.ru/pub/rw1c_src.zip (26K)
Способы сборки компилятора на разных платформах и разными компиляторами:
Code: Select all
*LINUX*
- GCC v3.3.4:
gcc -O2 rw1c.c rw1_prep.c rw1_expr.c my_text.c my_hex.c -o rw1c
*WIN-XP*
- Cygwin GCC v2.95.2-6:
gcc -O2 rw1c.c rw1_prep.c rw1_expr.c my_text.c my_hex.c -o rw1c.exe
- Visual C++ Toolkit 2003 v13.10.3077:
cl rw1c.c rw1_prep.c rw1_expr.c my_text.c my_hex.c
- Borland C++ v5.5.1:
RW1C_BCC.BAT:
SET BCC=C:\BORLANDC
SET PATH=%BCC%\BIN;%PATH%
BCC32 -K -I%BCC%\INCLUDE -L%BCC%\LIB rw1c.c rw1_prep.c rw1_expr.c my_text.c my_hex.c
*DOS*
- Pacific C v7.51:
C:\PACIFIC\BIN\PACC -Bl rw1c.c rw1_prep.c rw1_expr.c my_text.c my_hex.c
- Watcom C/C++ v10.0:
RW1C_WAT.BAT:
SET WATCOM=C:\WATCOM
SET PATH=%WATCOM%\BIN;%WATCOM%\BINB
SET INCLUDE=%WATCOM%\H
WCL386 -k32768 rw1c.c rw1_prep.c rw1_expr.c my_text.c my_hex.c
- Borland C++ v3.1:
RW1C_BOR.BAT:
SET BC=C:\BC
SET PATH=%BC%\BIN;%PATH%
BCC -I%BC%\INCLUDE -L%BC%\LIB -K -ml rw1c.c rw1_prep.c rw1_expr.c my_text.c my_hex.c
- Turbo C v2.01:
RW1C_TUR.BAT:
SET TC=C:\TC
UNIX2DOS my_hex.c
UNIX2DOS my_hex.h
UNIX2DOS my_text.c
UNIX2DOS my_text.h
UNIX2DOS rw1.h
UNIX2DOS rw1_expr.c
UNIX2DOS rw1_expr.h
UNIX2DOS rw1_prep.c
UNIX2DOS rw1_prep.h
UNIX2DOS rw1c.c
SET PATH=%TC%;%PATH%
TCC -I%TC%\INCLUDE -L%TC%\LIB -K -ml rw1c.c rw1_prep.c rw1_expr.c my_text.c my_hex.c
-
Shaos
- Admin
- Posts: 25244
- Joined: 08 Jan 2003 23:22
- Location: Silicon Valley
RW1C v2.1.6
22 апреля 2007 года
Зарелизил новую версию компилятора - как часть проекта NedoPC SDK на SourceForge.
Качать тут: http://sourceforge.net/project/showfiles.php?group_id=181535
Вот история изменений:
Примеры компиляции исходников под разные платформы разными компиляторами:
8 мая 2007 года
На днях добавил сборку компилятора под MacOS X (PowerPC)
Зарелизил новую версию компилятора - как часть проекта NedoPC SDK на SourceForge.
Качать тут: http://sourceforge.net/project/showfiles.php?group_id=181535
Вот история изменений:
Code: Select all
RW1C HISTORY IN RUSSIAN (KOI8R)
===============================
v2.1.6 (21 апреля 2007)
- исправлена запись отладочной информации (опция -d)
v2.1.5 (26 декабря 2006)
- первый релиз под лицензией GPL
- изменение логики проверки на переменные
v2.1.4 (19 декабря 2005)
- добавлены новые команды PUSH и CLEAR
- скорректирована логика парсинга переменных в командах (RECVP array)
- исключена возможность использования CONTINUE и BREAK вне циклов
v2.1.3 (29 ноября 2005)
- поддержка нового регистра H (адрес 0xFF1E) обозначающего старшее слово результата
- исправлена ошибка дублирования метки
- возможность вызова процедур без аргументов не используя CALL
- максимальная длина строки программы теперь 1024 символа
- исправление падения программы при индексировании массива несуществующей переменной
- теперь определение макросов допускается только до метки START или снаружи функций
- исключено удаление пробелов из описания макроса
- разделение исходника на несколько файлов
- подправлен текст лицензионного соглашения к исходным текстам
v2.1.2 (04 апреля 2003)
- дополнительный поиск включаемых файлов в подкаталоге исполняемого файла
- избавление от предупреждений при компиляции
v2.1.1 (30 сентября 2002)
- обработка RETURN expression
- автоматический перенос { и } на новые строки
- адаптация исходников к Borland-C++ 5.5
v2.1.0 (18 сентября 2002)
- опциональное сохранение в байткоде отладочной информации
- публикация исходного кода программы в интернете
v2.0.12 (15 мая 2002)
- реализация указателей через регистры A,B,C
v2.0.11 (29 января 2002)
- исправление нескольких мелких багов
v2.0.10 (22 января 2002)
- разрешение записи вида for(;;)
- компиляция строк в массивы
v2.0.9 (21 января 2002)
- разрешение команды NOP
- запрет перевода в верхний регистр в символах вида 'c'
- исправлена ошибка вложенных if
v2.0.8 (15 января 2002)
- исправлено повторение меток в LST файле
- адаптация исходников к Pacific C v7.51
v2.0.7 (05 августа 2001)
- эксперименты с компиляцией под Palm
- добавлена проверки парности фигурных скобок
- теперь в SAY допускается писать имена переменных маленькими буквами
v2.0.6 (10 мая 2001)
- добвлена возможность вызова подпрограмм с аргументами
- исправлена ошибка обработки шестнадцатиричных чисел
v2.0.5 (04 мая 2001)
- поддержка стандартного С и адаптация для Linux
v2.0.4 (18 апреля 2001)
- исправлена ошибка с компиляцией if(N==@t_robot)
- теперь LST файл создается даже в случае ошибки препроцессора
v2.0.3 (13 апреля 2001)
- код поправлен для использования совместно с RW1 Editor
v2.0.2 (12 апреля 2001)
- ужесточены правила проверки аргументов aVar
- изменены определения COPYP aVar и SENDP aVar
- теперь допускается инициализировать массивы метками
v2.0.1 (10 апреля 2001)
- исправлена ошибка короткого определения SET Var
- добавлено короткое определение SEND Var и SENDP Var
- исправлена ошибка сохранения вместо имени робота его пути
v2.0.0 (02 ноября 2000)
- первая версия переписанного с нуля компилятора RW1 Code: Select all
How to build RW1C using different compilers for different platforms
===================================================================
For LINUX you can use "make" command (compilation by gcc).
For others (all sources should be put to current directory):
*WINDOWS*
- Cygwin GCC v2.95.2-6:
gcc -O2 rw1c.c rw1_prep.c rw1_expr.c my_text.c my_hex.c -o rw1c.exe
- Visual C++ Toolkit 2003:
cl rw1c.c rw1_prep.c rw1_expr.c my_text.c my_hex.c
- Borland C++ v5.5.1:
Create RW1C_BCC.BAT (change paths if needed):
SET BCC=C:\BORLANDC
SET PATH=%BCC%\BIN;%PATH%
BCC32 -K -I%BCC%\INCLUDE -L%BCC%\LIB rw1c.c rw1_prep.c rw1_expr.c my_text.c my_hex.c
*DOS32*
- OpenWatcom C/C++ v1.6:
Create RW1C_OWC.BAT (change paths if needed):
SET WATCOM=C:\OWATCOM
SET PATH=%WATCOM%\BINW
SET INCLUDE=%WATCOM%\H
WCC386 /onatx /oh /ei /3 /fp3 rw1c.c
WCC386 /onatx /oh /ei /3 /fp3 rw1_prep.c
WCC386 /onatx /oh /ei /3 /fp3 rw1_expr.c
WCC386 /onatx /oh /ei /3 /fp3 my_text.c
WCC386 /onatx /oh /ei /3 /fp3 my_hex.c
WLINK system pmodew option stack=32k file rw1c,rw1_prep,rw1_expr,my_text,my_hex name rw1c
- Watcom C/C++ v10.6:
Create RW1C_WCC.BAT (change paths if needed):
SET WATCOM=C:\WATCOM
SET PATH=%WATCOM%\BIN;%WATCOM%\BINB
SET INCLUDE=%WATCOM%\H
WCL386 -k32768 rw1c.c rw1_prep.c rw1_expr.c my_text.c my_hex.c
*DOS16*
- Pacific C v7.51:
C:\PACIFIC\PACC -Bl rw1c.c rw1_prep.c rw1_expr.c my_text.c my_hex.c
- Turbo C v2.01:
Create RW1C_TC2.BAT (change paths if needed):
SET TC=C:\TC
UNIX2DOS my_hex.c
UNIX2DOS my_hex.h
UNIX2DOS my_text.c
UNIX2DOS my_text.h
UNIX2DOS rw1.h
UNIX2DOS rw1_expr.c
UNIX2DOS rw1_expr.h
UNIX2DOS rw1_prep.c
UNIX2DOS rw1_prep.h
UNIX2DOS rw1c.c
SET PATH=%TC%;%PATH%
TCC -I%TC%\INCLUDE -L%TC%\LIB -K -ml rw1c.c rw1_prep.c rw1_expr.c my_text.c my_hex.c
- Borland C++ v3.1:
Create RW1C_BC3.BAT (change paths if needed):
SET BC=C:\BC
SET PATH=%BC%\BIN;%PATH%
BCC -I%BC%\INCLUDE -L%BC%\LIB -K -ml rw1c.c rw1_prep.c rw1_expr.c my_text.c my_hex.c
На днях добавил сборку компилятора под MacOS X (PowerPC)
-
Shaos
- Admin
- Posts: 25244
- Joined: 08 Jan 2003 23:22
- Location: Silicon Valley
Re: [RW1] Улучшения в новой версии компилятора ROBBYC
Текущей версией роботовского компилятора ROBBYC является v2.3.4 от 22 января 2025 года:
Исходники под GPLv3 доступны в репе nedoPC SDK на гитлабе:
https://gitlab.com/nedopc/sdk/-/tree/master/robbyc?ref_type=heads
Code: Select all
ROBBYC HISTORY
==============
v2.3.4 (22 Jan 2025)
- checking existance of .R-file (now file extension may have suffix)
- added new option -n (disabe includes)
v2.3.3 (30 Jul 2024)
- fixed wrong PUSH argument on 16-bit systems
v2.3.2 (17 Jul 2024)
- put RET at the end of main() instead of NOP
v2.3.1 (08 Jul 2024)
- optional listing file has .RLS file extension now
- fixed path logic when executed from different directory
v2.3.0 (20 May 2018)
- RW1C renamed to ROBBYC (Robby Compiler)
- source files are having .R file extension now
- relicensed under GPL v3 as part of nedoPC SDK
v2.2.0 (18 Dec 2012)
- added new commands ASM and GET
- characters in listing not only for SAY and TEST, but also for TEXT and ASM
- removed GOTO START at the end of main() and NOP used instead
- support for new register U (address 0xFF16) for high word of time
- added new option -r to generate web robots (.rjs)
- added TRUE and FALSE to the list of predefined constants
- command PRINT is back
https://gitlab.com/nedopc/sdk/-/tree/master/robbyc?ref_type=heads
