CAOS/Setup

Материал из Wiki - Факультет компьютерных наук
Перейти к: навигация, поиск

Настройка рабочего окружения

kks

https://github.com/darkkeks/kks

kks это консольная утилитка для курса, выполняющая много вещей, среди которых можно выделить несколько основных:

  1. Скачивание задач/сэмплов/контрольных с помощью одной команды. То же самое со сдачей задач: можно сдать и получить сразу результат.
  2. Генерация тестов с помощью скриптов и их тестирование.
  3. Просмотр рейтинга (как общего, так и по группам) в удобном формате

Пример использования:

kks sync  # скачивание задач
# тут вы написали свой код
kks test --sample  # тестирование
kks submit

Больше примеров можно посмотреть в репозитории

Библиотека ввода-вывода

Библиотека ввода-вывода для ассемблера x86: simpleio_i686.S

Внутри виртуальной машины её можно скачать командой wget https://caos.myltsev.ru/simpleio_i686.S

Если получаете сообщение, что Wget не установлен на вашей системе (на Ubuntu Desktop по умолчанию нет), то установите его следующей командой: sudo apt install wget

Виртуальная машина (VirtualBox)

Образ виртуальной машины

Рекомендуется скачать образ и установить его в эмулятор VirtualBox. Логин-пароль xubuntu/xubuntu, можно делать sudo.

Docker для пользователей MacOS (intel based)

Проверялось на MacOS BigSur и Monterey

Загрузить сам докер можно отсюда: тык

Команда для запуска: docker run -it --rm -v `pwd`:/caos -w /caos ubuntu

В терминале заходите в свою папку с акосом и запускаете эту команду. После нее вы начинаете работать с контейнером Ubuntu в папке /caos, где будет все содержимое вашей папки в основной ОС. Изменять содержимое внутри /caos можно и изнутри контейнера, и снаружи, изменения будут видны и там и там.

Внутри контейнера стоит установить gcc-multilib, без неё не заведётся: apt update && apt install -y gcc-multilib

Теперь вы можете писать код внутри своей любимой IDE (запущенной напрямую в вашей ОС, например VSCode), а компилить и запускать в докере через терминал.

Docker для пользователей MacOS на Apple Silicon

Добавьте в .bashrc или .zshrc:

export DOCKER_DEFAULT_PLATFORM=linux/amd64

После этого перезапустите Docker.

Вариант2:

  • Скачиваем docker.
  • Переходим в папку с задачами в терминале.
  • Выполняем docker run --platform linux/amd64 -it --rm -v `pwd`:/caos -w /caos ubuntu
  • Делаем apt update
  • Делаем apt -y install build-essential gcc-multilib
  • Собираем задачки командой gcc -m32 -g задача.S simpleio_i686.S

CLion

Для начала скачайте CLion с официального сайта и устанавите его.

Если у вас не linux: вар. 1 - docker

Скачайте и установите docker desktop. Добейтесь того, чтобы у вас заработал docker hello world (docker run --rm hello-world).

Если у вас MacOs на арме сделайте то, что написано выше.

После этого нам потребуется специальный образ с необходимыми для курса библиотеками и программами. Создайте файл с именем Dockerfile и следующим содержанием:

FROM ubuntu:latest

RUN apt update && apt install -y gcc-multilib gdb make cmake g++
WORKDIR /caos

В директории с этим запустите эту команду чтобы собрать образ: docker build -t caos . и дождитесь пока она выполнится.

После этого откройте окно настроек, перейдите в пункт Build, Execution, Deployment -> Toolchains и добавьте новый Toolchain с типом Docker. В поле Image укажите caos:latest, а остальные поля должны определиться автоматически. Поместите этот Toolchain первым в списке сделав его default'ным.

Если у вас не linux: вар. 2 - wsl (Windows only)

Установите wsl, выберите дистрибутив Ubuntu. Внутри wsl поставьте необходимые пакеты (sudo apt install gcc-multilib make cmake g++ gdb.

После этого откройте окно настроек, перейдите в пункт Build, Execution, Deployment -> Toolchains и добавьте новый Toolchain с типом WSL. Все поля должны определиться автоматически. Поместите этот Toolchain первым в списке сделав его default'ным.

Далее

Создайте проект (можете выбрать C Executable, но это не особо принципиально) Скачайте simpleio_i686.S и поместите в корень проекта.

В CMakeLists.txt удалите всё и вставьте это:

cmake_minimum_required(VERSION 3.10)
project(caos ASM)

add_compile_options(-m32)
add_link_options(-m32)

file(GLOB_RECURSE sources_list LIST_DIRECTORIES true ./*)
foreach(file ${sources_list})
    IF(${file} MATCHES ".S$" AND NOT ${file} MATCHES "simpleio_i686.S")
        get_filename_component(X ${file} NAME)
        add_executable(${X} ${file} simpleio_i686.S)
    endif()
endforeach()

Сделайте Reload Cmake project (Внизу выберите вкладку Cmake и нажмите слева на кнопку обновления с двумя стрелочками).

Этот конфиг написан таким образом, чтобы эффективно работать совместно с kks. На каждый .S файл (кроме библиотеке simpleio_i686.S) он создаст цель для сборки. После того как у вас в проекте появляется новый файл (например после kks sync) нужно делать Reload Cmake project. Выберите справа сверху интересующий вас файл и запускайте.

Подсветка синтаксиса

Если она работает не правильно, откройте файл simpleio_i686.S, нажмите на его вкладку в списке открытых файлов сверху правой кнопкой мыши и выберите "Associate file type". В списке выберите Assembly Language.

Дебагер

Дебагер работает из коробки.

Чтобы узнать значения регистра, напишите в поле снизу строку $eax и нажмите на кнопку "+".