Ремонт принтеров, сканнеров, факсов и остальной офисной техники


назад Оглавление вперед




[15]

forth@homepc:/tmp$

10.7 Добавьте загрузку бинарного файла в статический массив

Наш интерпретатор будет загружать программу, откмопилированную в байт-код, из бюинарного файла, указанного в командной строке первым параметром:

forth@debian:/tmp$ ./vm sample pa ra me ters

Остальные параметры пока игнорируются.

Для эмуляции памяти форт-компьютера будем использовать статический массив размером 64К машинных слов46

#define Msz 0x10000

#include <stdio.h> #include <stdlib.h> #include <assert.h>

#define uint unsigned int

int M[Msz]; память виртуальной форт-машины FVM

int main(int argc, char *argv[]) {

assert(argc>l);

FILE *img=fopen(argv[l],"rb"); assert(img!=NULL); assert(fread(M,sizeof(int),Msz,img)!=0); fclose(img);

Файл открывается в режиме "rb": read binary, при открытии и чтении проверяется успешность операций. Если файл не существует или имеет нулевую длину, интерпретатор завершит работу с сообщением об ошибке.

Файл байт-кода должен иметь размер не более чем Msz - добавьте проверку что размер файла не превышает Msz.

В *NIX любой файл может быть исполняемым - если мы хотим чтобы файлы с байт-кодом запускались по их имени без явного указания запуска интерпретатора:

forth@debian:/tmp$ ./sample pa ra me ters

forth@debian:/tmp$ ./vm sample pa ra me ters

в начале файла должна находится сигнатура - строка типа #!/usr/bin/FVM<cr> (сг - конец строки, код 0x0А). При запуске такого файла будет автоматически запущен интерпретатор /usr/bin/FVM47.

Доработайте программу так, чтобы перед загрузкой байт-кода пропускались первые 16 байт файла, в которые будет помещена сигнатура.

46int, для DOS 2 байта = 16 бит, для Win/Linux 32 бита

47для компиляции используйте команду gcc -о /usr/bin/FVM vm.cpp, выполнив ее из под пользователя root

версия 26 октября 2005 г.ФОРТ


11 Заключение

11 Заключение

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

Последнюю версию этой книги и другие материалы по Форту и разработке железа вы можете скачать с [akps].

Пожалуйста, направляйте ваши замечания и предложения:

Dmitry Ponyatov <forth@km.ru>

tel.: +7 846 228 99 10 (рабочий), 925 43 13 (домашний) FidoNet: 2:5057/18.29 или в конференцию SU.FORTH

Лучше всего если вы присоединитель к работе над книгой и другими материалами сайта - это могут быть как ваши письма с описанием различных методик, исходными текстами программ и т.д., так и полноценная on-line работа над материалами используя доступ с использованием CVS (см. http: www.cvs.ru).

11.0.1 Необходимый софт

•Любая Форт-система для вашей ОС. Примеры приведены для форт-систем, соответствующих стандартам FORTH-83 и ANS FORTH 94. Для Win я использую SP-FORTH. См. подробный список форт-систем. В книгу планируется включить разделы, посвященные использованию нескольких самых распространенных форт-систем (в смысле использования специфичных для каждой системы возможностей).

разработки для встраиваемых систем на микроконтроллерах или не-80х86 процессорах48, симулятор VHDL).

го языка - для написания интерпретирующего движка FVM и т.п. Для DOS-движка я использую Borland СП-Ь 3.1. Из скриптовых языков очень рекомендую Python.

гого раздела сайта. Для win качайте cvsnt/WinCVS или cvs-sfx .

- я пользуюсь средой DOS Navigator и редактором vim.

11.0.2 Необходмые навыки

•Для работы над текстом книги - владение издательской системой DTgX, желательно под любым UNIXom (Linux, *BSD).

48AVR, MCS-51, PIC, и т.п.


Список литературы

[rung] сайт группы RU FIG (Russian FORTH Interests Group) http: www.forth.org.ru

[akps] сайт Лаборатории аэрокосмического приборостроения (АКПС) СГАУ http: akps.ssau.ru

[orange] М. Келли, Н.Спайс

Язык программирования ФОРТ

Перевод с английского Е. В. Куркова, Ю. А. Семенова Москва, "Радио и связь", 1993 http: akps.ssau.ru/forth/orange/

[green] С.Н. Баранов, Н.Р. Ноздрунов Язык Форт и его реализации

Лениград, "Машиностроение" Ленинградское отделение, 1988 http: akps.ssau.ru/forth/green/

[starting] Лео Броуди

Начальный курс программирования на языке Форт Перевод с английского В.А. Кондратенко Под редакцией Б.А. Кацева, В.А. Кириллина Предисловие И.В. Романовского Москва, "Финансы и статистика", 1990

[thinking] Лео Броуди

Способ мышления - Форт. Язык и философия для решения задач Перевод с английского С.Н. Дмитренко Москва, 1993

http: akps.ssau.ru/forth/thinking/

[ans] American National Standard for Information Systems Programming Languages Forth

Computer and Business Equipment Manufacturers Association

Approved: March 24, 1994

American National Standards Institute, Inc.

© 1994 by Technical Committee X3J14 HTML

оригинал http: akps.ssau.ru/forth/ans/en/dpans.htm

перевод http: akps.ssau.ru/forth/ans/ru/dpans.htm

версия 26 октября 2005 г.ФОРТ



[стр.Начало] [стр.1] [стр.2] [стр.3] [стр.4] [стр.5] [стр.6] [стр.7] [стр.8] [стр.9] [стр.10] [стр.11] [стр.12] [стр.13] [стр.14] [стр.15]