W Cat - Язык программирования Euphoria. Справочное руководство

Тут можно читать онлайн W Cat - Язык программирования Euphoria. Справочное руководство - бесплатно полную версию книги (целиком) без сокращений. Жанр: comp-programming. Здесь Вы можете читать полную версию (весь текст) онлайн без регистрации и SMS на сайте лучшей интернет библиотеки ЛибКинг или прочесть краткое содержание (суть), предисловие и аннотацию. Так же сможете купить и скачать торрент в электронном формате fb2, найти и слушать аудиокнигу на русском языке или узнать сколько частей в серии и всего страниц в публикации. Читателям доступно смотреть обложку, картинки, описание и отзывы (комментарии) о произведении.
  • Название:
    Язык программирования Euphoria. Справочное руководство
  • Автор:
  • Жанр:
  • Издательство:
    неизвестно
  • Год:
    неизвестен
  • ISBN:
    нет данных
  • Рейтинг:
    4.25/5. Голосов: 81
  • Избранное:
    Добавить в избранное
  • Отзывы:
  • Ваша оценка:
    • 80
    • 1
    • 2
    • 3
    • 4
    • 5

W Cat - Язык программирования Euphoria. Справочное руководство краткое содержание

Язык программирования Euphoria. Справочное руководство - описание и краткое содержание, автор W Cat, читайте бесплатно онлайн на сайте электронной библиотеки LibKing.Ru

Euphoria (юфо'ри, также рус. эйфори'я, ра'дость) — язык программирования, созданный Робертом Крейгом (Rapid Deployment Software) в Канаде, Торонто. Название Euphoria — это акроним для «End-User Programming with Hierarchical Objects for Robust Interpreted Applications».


Euphoria — интерпретируемый императивный язык высокого уровня общего назначения. C помощью транслятора из исходного кода на Euphoria может быть сгенерирован исходный код на языке Си, который в свою очередь может быть скомпилирован в исполнияемый файл или динамическую библиотеку при помощи таких компиляторов, как GCC, OpenWatcom и др. Программа Euphoria также может быть «связана» с интерпретатором для получения самостоятельного исполняемого файла. Поддерживается несколько GUI-библиотек, включая Win32lib и оберток для wxWidgets, GTK+ и IUP. Euphoria имеет встроенную простую систему баз данных и обертки для работы с другими типам баз данных.

[Материал из Википедии]

Язык программирования Euphoria. Справочное руководство - читать онлайн бесплатно полную версию (весь текст целиком)

Язык программирования Euphoria. Справочное руководство - читать книгу онлайн бесплатно, автор W Cat
Тёмная тема
Сбросить

Интервал:

Закладка:

Сделать

Подача величин с плавающей точкой в подпрограмму машинного кода будет выполняться быстрее, если вы используете для вызова подпрограммы c_func(), а не call(), так как в этом случае нет необходимости вызывать ещё и atom_to_float64() и poke(), чтобы разместить величины с плавающей точкой в памяти.

Интерпретатор ex.exe (DOS) для обработки величин с плавающей точкой осуществляет вызовы подпрограмм Watcom (а эти подпрограммы уже сами обращаются к математическому сопроцессору, если он доступен), поэтому величины с плавающей точкой обычно подаются и считываются в паре целочисленных регистров, а не в регистрах плавающей точки. Вам, видимо, нужно будет дизассемблировать какой-нибудь код, выработанный Watcom, чтобы посмотреть в точности, как он работает, если вы решите программировать в машинных кодах.

Пример:

atom user32

integer LoadIcon

-- открываем системную библиотеку user32.dll - она содержит Си-функцию LoadIconA

user32 = open_dll("user32.dll")

-- Си-функция принимает указатель Си и целое Си в качестве аргументов.

-- Си-функция выдаёт целое Си в качестве результата.

LoadIcon = define_c_func(user32, "LoadIconA",

{C_POINTER, C_INT}, C_INT)

-- Мы использовали здесь "LoadIconA", так как знаем, что LoadIconA

-- работает по правилам stdcall, как работают

-- все стандартные подпрограммы .dll в системе WIN32 API.

-- Чтобы задать правила cdecl, мы бы использовали "+LoadIconA".

if LoadIcon = -1 then

puts(1, "LoadIconA не найдена!\n")

end if

См. также:

euphoria\demo\callmach.ex, c_func, define_c_proc, c_proc, open_dll, platform_r.htm

define_c_proc

Синтаксис:

include dll.e

i1 = define_c_proc(x1, x2, s1)

Описание:

Выдаёт номер(идентификатор) подпрограммы для заданной Си-функции или же подпрограммы машинного кода, которые подлежат вызову в качестве процедур Euphoria. Аргументами служат характеристики заданной функции (подпрограммы). Выданный номерi1 используется далее в качестве первого аргумента при вызове подпрограммы c_proc(), которая и запускает заданную внешнюю подпрограмму на исполнение из Euphoria как процедуру.

Когда вы задаёте характеристики Си-функции, аргумент x1 должен представлять собой адрес системной библиотеки, содержащей эту Си-функцию. Адрес библиотеки вы должны получить, заранее вызвав функцию open_dll(). Аргумент x2 задаёт имя Си-функции, которая вас интересует. Если define_c_proc() не находит заданную Си-функцию, в качестве номера она выдаёт -1. На платформе Windows вы можете перед именем функции добавить символ '+'. Он показывает Euphoria, что для вызова Си-функции предусмотрены правила соглашения cdecl. По умолчанию Euphoria считает, что подпрограммы Си вызываются по правилам соглашения stdcall.

Когда вы задаёте характеристики подпрограммы машинного кода, аргумент x1 должен быть пустым рядом, "" или {}, а x2 - содержать адрес подпрограммы машинного кода. Байты машинного кода должны быть заранее размещены в участке памяти, выделенном функцией allocate(), которая и выдаёт адрес, используемый далее для размещения подпрограммы машинного кода и задания её характеристик. На платформе Windows подпрограммы машинного кода обычно следуют правилам соглашения stdcall, но если вам вместо этого необходимо использование правил cdecl, вы можете записать x2 как ряд {'+', адрес}вместо подачи значения адресакак атома.

Аргумент s1 представляет собой список типов аргументов функции (подпрограммы). Полный список типов Си, содержащий их определения, находится в библиотеке dll.eи показан выше. Эти же типы могут быть использованы при назначении типов аргументов для подпрограммы машинного кода.

Си-функция, характеристики которой вы задаёте с использованием define_c_proc(), может быть создана с помощью транслятора с Euphoria на Си. В этом случае вы сможете подавать в неё данные типов Euphoria. Полный список типов Euphoria с их определениями находится в библиотеке dll.eи показан выше.

Комментарии:

Аргументы Си-функций могут быть любого целочисленного типа Си и типа указателя (пойнтера) Си. Если аргументы Си-функции имеют тип двойной точности или с плавающей точкой, то в их качестве могут использоваться атомы Euphoria.

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

В настоящее время не существует метода подачи в Си-функцию структуры Си по величине. Вы можете подать как аргумент лишь указатель на структуру

Заданная вами Си-функция может выдавать величину, но эта величина будет игнорироваться. Если вы заинтересованы в получении и использовании величины, выдаваемой Си-функцией, вам следует обратиться к паре подпрограмм define_c_func() и c_func().

Пример:

atom user32

integer ShowWindow

-- Открываем системную библиотеку user32.dll - в ней находится Си-функция ShowWindow.

user32 = open_dll("user32.dll")

-- Си-функция требует 2-х аргументов, оба типа C int.

ShowWindow = define_c_proc(user32, "ShowWindow", {C_INT, C_INT})

-- Если бы ShowWindow работала по правилам cdecl,

-- мы записали бы здесь "+ShowWindow"

if ShowWindow = -1 then

puts(1, "ShowWindow не найдена!\n")

end if

См. также:

c_proc, define_c_func, c_func, open_dll, platform_r.htm

define_c_var

Платформа:

WIN32, Linux, FreeBS D

Синтаксис:

include dll.e

a1 = define_c_var(a2, s)

Описание:

Выдаёт адрес переменной Си, загруженной в память. Аргумент a2 является адресом общей библиотеки .so Linux, FreeBSD или .dll Windows, выданным функцией open_dll(). Ряд s задает имя глобальной переменной Си, определенной внутри системной библиотеки. В переменной a1 будет содержаться значение адреса переменной s в памяти.

Комментарии:

Как только вы получили адрес переменной Си, и если вы знаете её тип, вы можете далее использовать подпрограммы peek() и poke(), чтобы считывать или записывать в памяти величину этой переменной.

Пример программы:

euphoria/demo/linux/mylib.exu

См. также:

c_proc, define_c_func, c_func, open_dll, platform_r.htm

dir

Синтаксис:

include file.e

x = dir(st)

Описание:

Выдаёт информацию о каталоге или о файле с именем st. Если такой каталог или файл не существует, выдаёт -1. Под Windows и DOS st может содержать символы догадок * и ?, что позволяет получать данные о нескольких файлах с похожими именами.

Выдаваемая информация похожа на ту, которую вы получаете по команде DIR под DOS. Ряд, формируемый функцией, содержит вложенные ряды (записи), каждый из которых описывает один файл или подкаталог.

Если в st задано имя каталога(директории, папки, фолдера), вы можете получить записи для "." и "..", точно так же, как и по команде DIR под DOS. Если же в st задано имя файла, тогда x будет иметь только одну запись, т.е. length(x) будет равна 1. Если в st содержатся символы догадок (шаблоны), вы можете получить многочисленные записи.

Читать дальше
Тёмная тема
Сбросить

Интервал:

Закладка:

Сделать


W Cat читать все книги автора по порядку

W Cat - все книги автора в одном месте читать по порядку полные версии на сайте онлайн библиотеки LibKing.




Язык программирования Euphoria. Справочное руководство отзывы


Отзывы читателей о книге Язык программирования Euphoria. Справочное руководство, автор: W Cat. Читайте комментарии и мнения людей о произведении.


Понравилась книга? Поделитесь впечатлениями - оставьте Ваш отзыв или расскажите друзьям

Напишите свой комментарий
x