Skip to content
/ RuC Public
forked from andrey-terekhov/RuC

Yet another compiler from Russian version of C into virtual machine

License

Notifications You must be signed in to change notification settings

tdv42/RuC

 
 

Repository files navigation

Virtual LLVM

Logo Russian C

Этот репозиторий содержит компилятор языка RuC. Авторство принадлежит Андрею Николаевичу Терехову, заведующему кафедрой "Системного программирования" СПбГУ.

Сборка

Под ОС Ubuntu

С клонируйте репозиторий по общедоступной ссылке:

$ git clone https://github.com/andrey-terekhov/RuC

Либо с сервера компании:

$ git clone ssh://git@gitlab.softcom.su:22500/ruc/ruc.git

Для конфигурирования и сборки, войдите в каталог и воспользуйтесь:

$ mkdir -p build && cd build && cmake .. && cd ..
$ cmake --build build --config Release

Полезные команды Git

Сохранение аутентификационных данных репозитория:

$ git config credential.helper store

Соединение локального репозитория с оригинальным:

$ git remote add upstream https://github.com/andrey-terekhov/RuC
$ git remote set-url --push upstream DISABLE

Стягивание изменений:

$ git fetch upstream
$ git rebase upstream/master

Под ОС Windows

Перед сборкой и использованием языка РуСи, необходимо установить систему сборки CMake и компилятор языка С/С++ от Microsoft, входящий в состав Visual Studio.

Прямые ссылки на загрузку: CMake 3.17.3 x64, CMake 3.17.3 x86.

При установке CMake, также необходимо отметить любой из пунктов Add CMake to the system PATH, как показано на картинке.

CMake

А при установке Visual Studio, необходимо добавить в сборку Разработка классических приложений на C++.

C++

После этого можно приступить к сборке проекта. Скачайте проект любым git клиентом, например, Git BASH и откройте папку проекта из Windows.

Для первоначальной настройки проекта введите команду:

$ mkdir build && cd build && cmake .. && cd ..

Для сборки/пересборки проекта используйте, вызываемую из корня:

$ cmake --build build --config Release

Исполняемый файл ruc.exe будет помещен в директорию build\Release. При запуске ему необходимо передать путь к РуСи коду в качестве параметра. При указании пути к коду используйте только прямой слеш (/)! Пример:

$ ruc.exe ../../tests/test.c

Сгенерированные коды будут помещены в папку, из которой был вызван транслятор.

Параметры командной строки

Компилятор

Компилятор РуСи поддерживает параметризацию из командной строки, порядок не важен, повторения игнорируются. В качестве параметров можно передавать:

  • Пути к файлам
  • Пути к библиотекам
  • Флаги компиляции
  • Примитивные макросы (в будущем)

Общие флаги:

  • -o - флаг переопределения выходного файла (использование -o export.txt)
  • -I - флаг поиска библиотек (использование -Ipath/to/headers)
  • -D - флаг предопределенного макроса (использование -DVAR=1024, эквивалентно #define VAR 1024)
  • -Wno - флаг отключения восстановления после ошибок

Флаги виртуальной машины:

  • -VM - флаг компиляции в коды виртуальной машины РуСи (по умолчанию)
  • Флаги сжатия выходных таблиц
    • -i64, -i32, -i16, -i8 - использование знаковых типов, размера 8, 4, 2 и 1 байт
    • -u64, -u32, -u16, -u8 - использование беззнаковых типов, соответственно

Флаги LLVM:

  • -LLVM - флаг компиляции в LLVM коды
  • --x86_64 - флаг целевой платформы Intel (по умолчанию)
  • --mipsel - флаг целевой платформы MIPS

Тестовая система

Usage: ./test.sh [KEY] ...
Description:
        This script tests all files from "../tests" directory.
        Folder "../tests/errors" should contain tests with expected error.
        Executable tests should be in "../tests/executable" directory.
        To ignore invalid tests output, use "*/warnings/*" subdirectory.
        For tests with expected runtime error, use "*/errors/*" subdirectory.
        For multi-file tests, use "*/include/*" subdirectory.
        Failed tests for debug build only will be marked with "(Debug)".
Keys:
        -h, --help      To output help info.
        -s, --silence   For silence testing.
        -f, --fast      Fast testing, Release builds only.
        -i, --ignore    Ignore errors & executing stages.
        -r, --remove    Remove build folder before testing.
        -d, --debug     Switch on debug tracing.
        -v, --virtual   Set RuC virtual machine release.
        -o, --output    Set output printing time (default = 0.0).
        -w, --wait      Set waiting time for timeout result (default = 2).

About

Yet another compiler from Russian version of C into virtual machine

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages

  • C 97.9%
  • Shell 1.4%
  • Other 0.7%