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

Здесь есть возможность читать онлайн «W Cat - Язык программирования Euphoria. Справочное руководство» весь текст электронной книги совершенно бесплатно (целиком полную версию без сокращений). В некоторых случаях можно слушать аудио, скачать через торрент в формате fb2 и присутствует краткое содержание. Жанр: Программирование, на русском языке. Описание произведения, (предисловие) а так же отзывы посетителей доступны на портале библиотеки ЛибКат.

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

Предлагаем к чтению аннотацию, описание, краткое содержание или предисловие (зависит от того, что написал сам автор книги «Язык программирования Euphoria. Справочное руководство»). Если вы не нашли необходимую информацию о книге — напишите в комментариях, мы постараемся отыскать её.

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. Справочное руководство», без необходимости каждый раз заново искать на чём Вы остановились. Поставьте закладку, и сможете в любой момент перейти на страницу, на которой закончили чтение.

Тёмная тема
Сбросить

Интервал:

Закладка:

Сделать

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

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

global constant C_CHAR = #01000001,

C_UCHAR = #02000001,

C_SHORT = #01000002,

C_USHORT = #02000002,

C_INT = #01000004,

C_UINT = #02000004,

C_LONG = C_INT,

C_ULONG = C_UINT,

C_POINTER = C_ULONG,

C_FLOAT = #03000004,

C_DOUBLE = #03000008

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

global constant

E_INTEGER = #06000004,

E_ATOM = #07000004,

E_SEQUENCE= #08000004,

E_OBJECT = #09000004

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

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

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

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

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

Если вы используете интерпретатор exw.exe для вызова по правилам cdecl Си-функции, которая выдаёт величину типа с плавающей точкой, такая комбинация может не сработать. Это обусловлено особенностями компилятора Watcom C (используемого для генерации exw.exe), который нестандартным образом обходится с выдаваемыми величинами типа с плавающей точкой при работе по правилам cdecl.

Подача величин с плавающей точкой в подпрограмму машинного кода будет выполняться быстрее, если вы используете для вызова подпрограммы 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, как работают

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

Интервал:

Закладка:

Сделать

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

Представляем Вашему вниманию похожие книги на «Язык программирования Euphoria. Справочное руководство» списком для выбора. Мы отобрали схожую по названию и смыслу литературу в надежде предоставить читателям больше вариантов отыскать новые, интересные, ещё непрочитанные произведения.


libcat.ru: книга без обложки
Александр Цветков
Отзывы о книге «Язык программирования Euphoria. Справочное руководство»

Обсуждение, отзывы о книге «Язык программирования Euphoria. Справочное руководство» и просто собственные мнения читателей. Оставьте ваши комментарии, напишите, что Вы думаете о произведении, его смысле или главных героях. Укажите что конкретно понравилось, а что нет, и почему Вы так считаете.

x