Язык Си для программирования HP 50g: плюсы и минусы

Тема использования языка Си и Си++ для разработки программ к ПМК уже затрагивалась в моей обзорной статье с примерами.

По ссылке - подробная и полная примеров статья (англ.яз.) об использовании компилятора HPGCC для создания программ к ПМК HP 50g. Я приведу только основные моменты, важные при выборе средства разработки.

В статье освещены две основные темы:

  1. Стремись к простоте, используй подходящий инструмент для работы. Си - не полная замена UserRPL. Например, функция на Си может потребовать много кода, чтобы реализовать аналог одной-двух команд UserRPL при обработке стека. С другой стороны Си быстрее, чем даже ассемблер Saturn-а (процессор прежних версий ПМК, в 50g он эмулируется, прим.пер.) для интенсивных вычислений. Код Си также легче читать, писать и отлаживать приложения с большим числом строк.
  2. Не изобретай велосипед. Есть много свободно доступных математических программ на Си. Большинство примеров в статье как раз сосредоточено на использовании такого свободно доступного Си-кода.

Почему Си?

  • Си выдает быструю, очень быструю программу.
  • Существует множество свободно доступного и качества математического кода и библиотек на Си. Это позволит вам сэкономить много времени.
  • Быстрая разработка и прототипирование. Каждый пример в статье был написан на компьютере, а затем перенесен на ПМК за несколько секунд.
  • Использование имеющихся навыков. Знание Си (в отличие от SysRPL и ассемблера Saturn) можно использовать практически в любом месте. Программирование для HP 50g на Си является примером т.н. встроенной разработки программ (embedded development). Кросс-трансляция, оптимизации размера, и навыки отладки имеют множество применений в других областях.
  • Переносимость. С небольшими усилиями вы можете перенести вашу 50g-программу на Си для ПК, Mac, КПК и даже калькуляторов TI (TIGCC).
  • Си - это, типа, круто :)

Почему не C?

  • Последовательный порт и USB в настоящее время не поддерживаются.
  • Небольшие программы на UserRPL могут быть достаточными. Зачем создавать сложность? Используй подходящий инструмент для работы.

HPGCC

HPGCC является кросс-компилятором доступным на платформах x86 Linux, Mac, Windows; он способен создавать исполняемые файлы для процессора ARM HP 50g. HPGCC основан на семействе компиляторов GCC (GNU Compiler Collection).

Официально HPGCC 2.0SP2 поддерживает только C, однако Jean-Yves Avenard создал Mac и Linux версии, которые также поддерживают Си++. С небольшим усилием можно было бы добавить и другие языки, например Fortran. Представьте себе компиляцию существующих Fortran-программ для вашего 50g. Они, вероятно, будут работать быстрее, чем на компьютере, на котором были изначально написаны!

В отличие от UserRPL, SysRPL, и ассемблера Saturn, исполняемые 50g ARM файлы запускаются вне среды UserRPL 50g. Это имеет некоторые преимущества, например, скорость и доступ к памяти. HPGCC создает непрерывный блок памяти неиспользуемых портов "0" и "1" для приложений, а также есть добавляет 90 KB оперативной памяти неиспользованные операционной системой 50g. Это в общей сложности дает до 459 KB (если порты 0 и 1 пусты). Хотя исполняемые файлы 50g ARM запускаются за пределами UserRPL, всё еще можно взаимодействовать со стеком.

Ответственность

Вы используете компилятор на свой страх и риск. Хотя никто не сообщал о поломке их 50g при работе с HPGCC, думаю, что всё возможно. Я полагаю, худшее, что может случиться, это поломка кнопки аппаратного сброса из-за большого числа перезапусков. Должен же был я вас хоть чем-то напугать. Искажения линий в области пересканирования ЖКИ появлялись после аппаратного сброса, но после примерно 10 секунд они исчезали. Я не был этим напуган, потому что повторял и видел результат.

Русский

Комментарии

HPGCC развивается или компилятор заморожен на HPGCC 2.0 SP2?

Есть третья версия, которая все еще в стадии "бета". В любом случае, использование таких инструментов не может быть массовым, нужно рассматривать как средство оптимизации при проблемах производительности или необходимости писать прямо под ARM. Кодогенераторы ассемблера под эмулятор Saturn-а более безопасны и функциональны при небольшой разнице в скорости.

Запилили третью версию hpgcc. http://hpgcc3.org