EXAPUNKS Guide

Справочное руководство по языку EXA for EXAPUNKS

Справочное руководство по языку EXA

Overview

Cправочник по языку используемому для управления EXA.

Введение

Что такое EXA?

EXA это сокращение от EXecutionAgent (Исполнительный агент). Это небольшая программа, которая может перемещаться с одного компьютера на другой через сеть, не прерывая того что она делает, даже на огромных расстояниях.

Код

Это список инструкций, которые говорят EXA, что делать. Он написан на компьютерном языке, разработанном специально для них. Если вы подключены к сети, используя среду разработки EXODUS, вы увидите окно слева для каждого из ваших EXA, которое позволяет вам редактировать их код и просматривать их регистры.

Программа EXA состоит из серии инструкций. Каждая инструкция требует ноль или более операндов. Операнды, требуемые каждой инструкцией, указываются с помощью коротких сокращений:

  • R – Регистр
  • R/N – Регистр или число между -9999 и 9999
  • L – Метка, определенная псевдоинструкцией MARK

Регистры

  • X

    Регистр X является регистром хранения общего назначения и может хранить число или ключевое слово.

  • T

    Регистр T является регистром хранения общего назначения и может хранить число или ключевое слово. Это также место назначения для инструкций TEST и критерий условных переходов (TJMP и FJMP).

  • F

    Регистр F позволяет EXA считывать и записывать содержимое удерживаемого файла. Когда EXA захватывает файл, его «файловый курсор» будет установлен на первое значение в файле. Чтение из регистра F будет считывать его значение; Запись в регистр F перезапишет его значение. После чтения или записи регистра F, файловый курсор будет автоматически перемещаться. Запись в конец файла добавит новое значение вместо перезаписи.

  • M

    Регистр M управляет функцией передачи сообщений между EXA. Когда EXA записывает в регистр M значение будет сохраняться в слоте исходящих сообщений этого EXA, пока другой EXA не прочитает из регистра M и не получит ранее записанное значение. Таким образом можно передавать как цифры, так и ключевые слова.

    Если EXA записывает в регистр M, он приостанавливает выполнение до тех пор, пока это значение не будет прочитано другим EXA. Если EXA читает из регистра M, он приостанавливает выполнение до тех пор, пока значение не станет доступным для чтения. Если два или более EXA пытаются прочитать из другого EXA одновременно (или наоборот), один из них выполнится успешно, но какой из них будет неизвестно.

    По умолчанию EXA может связываться с любым другим EXA в той же сети. Это можно ограничить EXA в том же хосте, переключая глобальную/локальную настройку в интерфейсе EXODUS или выполняя инструкцию MODE. EXA в глобальном режиме не может обмениваться данными с EXA в локальном режиме, даже если они находятся на одном хосте.

Аппаратные регистры

Некоторые хосты, на которых работает EXA-VM, могут предоставлять доступ к подключенному оборудованию через использование аппаратных регистров. Допустимыми именами для аппаратных регистров являются знак решетки (#), за которым следуют четыре символа, например #POWR или #ENAB. В зависимости от конфигурации хостов аппаратные регистры могут быть доступны для чтения и записи, только для чтения или только для записи.

Управление значениями

  • COPY R/N R

    Копирование значение первого операнда во второй операнд.

  • ADDI R/N R/N R

    Добавление значения первого операнда к значению второго операнда и сохранение
    результата в третьем операнде.
    Тот же синтаксис используется для команд SUBI (вычитание), MULI (умножение), DIVI
    (целочисленное деление) и MODI (деление с остатком).

  • SWIZ R/N R/N R

    Изменение значение первого операнда, используя значение второго операнда в
    качестве маски, и сохранение результат в третьем операнде. Инструкция SWIZ может
    быть использована для перестановки и / или извлечения цифр в числе, как показано:

      Ввод
      Маска
      Результат
      6789
      4321
      6789
      6789
      3333
      7777
      6789
      1211
      9899
      6789
      -4321
      -6789
      -6789
      -4321
      6789
      6789
      2000
      8000
      6789
      0001
      0009

Ветвление

  • MARK L

    Помечает эту строку указанной меткой. MARK является псевдоинструкцией и не
    выполняется.

  • JUMP L

    Переходит к указанной метке.

  • TJMP L

    Переходит к указанной метке, если регистр T равен 1 (или любому значению,
    отличному от 0). Это соответствует результату TEST, который был верным.

  • FJMP L

    Переходит к указанной метке, если регистр T равен 0. Это соответствует результату
    TEST, который был неверным.

Проверка значений

  • TEST R/N = R/N

    Сравнивает значение первого операнда со значением второго операнда. Если они
    равны, устанавливает регистр T в 1, в противном случае установите регистр T в 0.
    Такой же синтаксис используется для < (меньше чем) и > (больше чем) тестов.

    TEST R/N = R/N
    TEST R/N < R/N
    TEST R/N > R/N
    Число / Число
    Проверка на равенство
    Проверка числового порядка
    Проверка числового порядка
    Ключевое слово / Ключевое слово
    Проверка на равенство
    Проверка алфавитного порядка
    Проверка алфавитного порядка
    Число / Ключевое слово
    Всегда ложно
    Всегда ложно
    Всегда ложно

Жизненный цикл

  • REPL L

    Создает копию этого EXA и в копии переходит к указанной метке.
    Если EXA удерживает файл при выполнении инструкции REPL, файл не будет
    скопирован и останется в исходном EXA.

  • HALT

    Завершить работу этого EXA. Если он удерживал файл, файл сбрасывается.

  • KILL

    Завершает работу другого EXA на том же хосте, что и этот EXA, с приоритетом EXA,
    созданных одним и тем же пользователем. Если существует более одной возможной
    цели, цель будет выбрана непредсказуемым образом.

Передвижение

  • LINK R/N

    Переходит по ссылке с указанным ID.

  • HOST R

    Копирует имя текущего хоста в указанный регистр.

Cвязь

  • MODE

    Переключает регистр M между глобальным и локальным режимом.

  • VOID M

    Читает и сбрасывает значение из регистра M.

  • TEST MRD

    Если этот EXA может читать из другого EXA без паузы, устанавливает регистр T в 1,
    иначе устанавливает регистр T в 0.

Управление файлами

  • MAKE

    Создает и берет новый файл.

  • GRAB R/N

    Захватывает файл с указанным идентификатором.

  • FILE R

    Копирует идентификатор удерживаемого файла в указанный регистр.

  • SEEK R/N

    Перемещает файловый курсор вперед (положительно) или назад (отрицательно) на
    указанное количество значений.
    Вы можете использовать значения -9999 или 9999 для надежного перемещения в
    начало или конец файла.

  • VOID F

    Удаление значения, выделенное курсором файла, из текущего файла.

  • DROP

    Сбрасывание текущего удерживаемого файла.

  • WIPE

    Удаление текущего удерживаемого файла.

  • TEST EOF

    Если указатель файла находится в конце удерживаемого файла, устанавливает
    регистр T в 1, в противном случае установите регистр T в 0.

Прочие инструкции

  • NOTE

    Любой текст, следующий за псевдоинструкцией NOTE, будет отброшен при
    компиляции, позволяя использовать его для написания «комментариев» для
    документирования кода. Любой текст, следующий за точкой с запятой в любом месте
    строки, также будет отброшен.

  • NOOP

    Ничего не делать один цикл.

  • RAND R/N R/N R

    Генерация случайного числа между первым и вторым операндами (включительно) и
    сохранение результата в третьем операнде.

Обучение 1: Основы

В первом уроке ваша цель – переместить определенный файл с идентификатором 200 с хоста с именем «Входящие» на хост с именем «Исходящие». Вы собираетесь переместить его по ссылке с идентификатором 800.

Запустите EXODUS и подключитесь к учебной сети. Новое пустое решение будет создано автоматически для вас. («Решение» – это просто набор EXA, которые начинают выполняться при нажатии кнопки запуска.)

Вы увидите пустой EXA с пустым окном кода в левой части экрана. Введите эти пять строк кода в EXA:

    1. Перейти по ссылке 800 для входа в сеть
    2. Взять файл 200
    3. Перейти по ссылке 800 с «входящие» на «исходящие»
    4. Сбросить удерживаемый файл
    5. Завершить EXA

    Нажмите кнопку шага, чтобы наблюдать за работой программы по одной инструкции за раз. Когда вам надоест, вы можете нажать кнопку пуска, чтобы посмотреть, как она работает сама по себе.

    После того, как вы удостоверились что программа работает правильно, вы можете нажать кнопку ускоренной перемотки вперед, чтобы программа проигралась до ее завершения. Поздравляю, вы только что запрограммировали свой первый EXA.

    Обучение 2: Чтение и запись файлов

    Следующая задача очень похожа на первую, за исключением того, что вам нужно читать и писать файл, а не просто перемещать его. Прочитайте требования в EXODUS для полного объяснения.

    Для чтения или записи файла, удерживаемого EXA, мы должны использовать регистр F. Мы также будем использовать регистр X для хранения промежуточных значений при выполнении операций. Введите следующий код в ваш пустой по умолчанию EXA:

      1. Перейти по ссылке 800 для входа в сеть
      2. Взять файл 200
      3. Считать из F и записать значение в X
      4. Вычислить X+F и записать значение в X
      5. Вычислить X*F и записать значение в X
      6. Вычислить XF и записать значение в X
      7. Считать из X и записать значение в F
      8. Перейти по ссылке 800 с «входящие» на «исходящие»
      9. Сбросить удерживаемый файл
      10. Завершить EXA

      Когда вы запустите программу и выполните инструкцию GRAB, обратите внимание, как окно для файла 200 появляется под окном для EXA, которое сейчас его держит.

      Также обратите внимание на «файловый курсор» в окне файла, выделив первое значение в файле. Когда EXA читает из F-регистра, он считывает значение, на которое указывает файловый курсор. Аналогично, запись в регистр F заменяет значение, на которое указывает курсор файла. Если файловый курсор находится в конце файла, он добавит новое значение вместо замены существующего.

      Чтение или запись регистра F автоматически перемещает файловый курсор к следующему значению в файле. Иногда это удобно. Иногда это нет.

      Ошибки выполнения и как их эксплуатировать

      Иногда EXA пытаются сделать то, что им не разрешено. Когда это происходит, этот EXA автоматически завершается хостом. Функционально это также же, как если бы EXA выполнил инструкцию HALT. Хотя большинство ошибок скучны и бесполезны, некоторые могут быть использованы в ваших интересах.

      Давайте начнем с некоторых скучных:

      • Деление на ноль

        Вы не можете делить на ноль на компьютере. Какая-то математическая вещь. Не
        беспокойся слишком сильно о понимании почему. Просто не делай этого.

      • Математические операции с ключевыми словами

        Ты не можешь выполнять такие операции, как сложение, вычитание, умножение и т. д. с ключевыми словами. Математические операции ограничены лишь числовыми значениями.

      • Неверный доступ к F-регистру

        Если ваш EXA читает или записывает регистр F, когда он не удерживает файл, он выдаст ошибку и умрет. Не забудьте сначала взять файл.

      • Неверный доступ к аппаратному регистру

        Убедитесь, что вы находитесь в том же хосте, что и аппаратный регистр к которому хотите получить доступ, прежде чем пытаться читать или записывать его.

      Вы, вероятно, увидите множество этих ошибок, когда будете кодить и исправлять их по ходу работы.

      Но давайте теперь поговорим о более интересном типе ошибок.

      Иногда вы не знаете всех деталей хоста, с которым работаете. Ссылки могут измениться, файлы могут исчезнуть. Есть некоторые вещи, которые вы можете узнать о своей операционной среде, только пытаясь выполнить код и, возможно, потерпев неудачу.

      Вот некоторые из них, которые более пригодны для использования:

      • Неверный доступ к файлу

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

      • Неверный переход по ссылке

        Скажем, вы искали конкретную ссылку. EXA, который который пытается найти её, прекратит работу, но теперь вы знаете, что ссылки там нет … чувствуете шаблон?

      Серьезно, не бойтесь позволить вашей EXA, выдать ошибку, потерпеть крах, умереть, как бы вы это ни называли. Они могут выглядеть мило для вас, но помните, что их цель в жизни – многократно порождать, вычислять и умирать. Вы можете воспользоваться этим в своих программах.

      Процесс перевода игры: (Заморожен)

      • Перевести мануал №1


        Переведено [5/21]
        Верстка [3/21]

      • Перевести описания миссий.
        Переведено [49/49]
        Отредактировано[15/49]

      • Перевести чат.
        Переведено [11/60]
        Отредактировано[0/60]

      • Перевести диалоги в кат-сценах.
        Переведено [11/11]
        Отредактировано[0/11]

      • Перевести диалоги c ИИ
        Переведено [0/?]
        Отредактировано[0/?]

      • Перевести текстуры
        Переведено [0/?]
        Отредактировано[?/?]

      Ссылка на перевод[yadi.sk]
      (Чтобы перевод заработал в игре необходимо переместить папку Content в папку EXAPUNKS и подтвердить замену всех файлов. Уведомляю вас что перевод может содержать ошибки и очепятки.)

      Обратная связь

      Перевел и оформил для вас: JMiki.
      Оставляйте свои предложения/исправления по переводу в комментариях.
      Если будут вопросы или трудности с игрой пишите в ЛС.
      vk.com/jmiki
      Discord: JMiki#6968
      Желаю всем удачи и приятной игры!

      SteamSolo.com