Flat Assembler 1.64. Мануал программера - [11]
>`
» конвертирует только символ, идущий непосредственно за ним. Здесь пример использования этих двух свойств:>macro label name
>{
> label name
> if ~ used name
> display `name # "is defined but not used.",13,10
> end if
>}
Если метка, определенная таким макросом, не используется в коде, он известит вас об этом сообщением, указывающим, к какой метке это относится.
Чтобы создать макроинструкцию, ведущую себя по-разному в зависимости от типа аргументов, например если это строки в кавычках, вы можете использовать оператор сравнения «>eqtype
». Вот пример его использования для отделения строки в кавычках от других типов аргументов:
>macro message arg
>{
> if arg eqtype ""
> local str
> jmp @f
> str db arg,0Dh,0Ah,24h
> @@:
> mov dx,str
> else
> mov dx,arg
> end if
> mov ah,9
> int 21h
>}
Вышеописанный макрос создан для показа сообщений в программах DOS. Если аргумент этого макроса некоторое число, метка или переменная, показывается строка из этого адреса, но если аргумент — это строка в кавычках, то созданный код покажет её после … и … .
Также возможно объявить макроинструкцию внутри другой макроинструкции, то есть один макрос может определить другой, но с такими определениями есть проблема, вызванная тем, что знак «>}
» не может появляться внутри макроинструкции, он всегда означает конец его определения. Чтобы обойти эту проблему, можно избавиться от мешающих символов. Это делается путем подстановки одного или больше обратных слэшей перед любыми другими символами (даже специальными знаками). Препроцессор видит эту последовательность как один символ, но каждый раз, когда он видит такой символ во время обработки макроса, он обрезает обратные слэши с его начала. Например, «>\{
» трактуется как один символ, но во время обработки макроса он станет символом «>\{
». Это позволит вам определить одну макроинструкцию внутри другой:
>macro ext instr
>{
> macro instr op1,op2,op3
> \{
> if op3 eq
> instr op1,op2
> else
> instr op1,op2
> instr op2,op3
> end if
> \}
>}
>ext add
>ext sub
Макрос «>ext
» определен корректно, но когда он используется, символы «>\{
» и «>\}
» становятся «>{
» и «>}
». То есть когда обрабатывается «>ext add
», содержание макроса становится действительным определением макроинструкции, и таким образом определяется макрос «>add
». Так же «>ext sub
» определяет макрос «>sub
». Использование символа «>\{
» не было здесь действительно необходимо, но сделано таким образом для того, чтобы определение было более ясным.
Если некоторые директивы, специфические для макроинструкций, такие как «>local
» или «>common
», требуются в некотором макросе, включенном таким образом, то их можно избежать таким же путем. Исключение символа больше чем одним обратным слэшем так же поддерживается, это позволяет допустить множественные уровни вложения определений макросов.
Другая техника определения макроинструкций внутри других состоит в использовании директивы «>fix
», которая становится полезной, когда некоторый макрос только начинает определение другого, без его закрытия. Например:
>macro tmacro params
>{
>macro params {
>}
>MACRO fix tmacro
>ENDM fix }
>определяет альтернативный синтаксис определения макросов, который выглядит как:
>MACRO stoschar char
>mov al,char
>stosb
>ENDM
Имейте в виду, что таким образом заданное определение должно быть создано с применением директивы «>fix
», так как перед тем, как процессор ищет знак «>}
» во время определения макроса, обрабатываются только символьные константы высшего приоритета! Может возникнуть проблема, если требуется выполнить некоторые дополнительные задания в конце такого определения, но есть еще одно свойство, которое в таких случаях поможет вам. А именно возможно поместить любую директиву, инструкцию или макроинструкцию сразу после символа «>}
», который заканчивает макроинструкцию и она будет обработана так же, как если бы была на следующей строке.
2.3.4 Структуры
«>struc
» — это специальный вариант директивы «>macro
», который используется для определения структур данных. Макроинструкции, определенные директивой «>struc
», когда используются, должны предваряться меткой (как директивы определения данных). Эта метка будет также присоединена к началу каждого имени, начинающегося с точки, в содержании макроинструкции. Макроинструкция, определенная с использованием директивы «>struc
», может иметь такое же имя, как макросы, определенные с использованием директивы «>macro
». Структурная макроинструкция не будет мешать обычному макросу, выполняющемуся без метки перед ним и наоборот. Все правила и свойства, касающиеся стандартных макросов, применимы к структурным макроинструкциям.
Вот пример структуры:
>struc point x,y
>{
> .x dw x
> .y dw y
>}
Например «>my point 7,11
» определит структуру, помеченную «>my
», содержащую две переменные: «>my.x
» со значением 7 и «>my.y
» со значением 11.
Еслигде-то в определении структуры находится имя, состоящие из одной лишь точки, оно заменяется на имя метки для данного примера структуры и эта метка таким образом не будет определена автоматически, позволяя полностью задать определение. Следующий пример использует это свойство, чтобы расширить определение директивы «

Жизнь современного человека плотно связана с видеоиграми. Даже если вы не играете сами, в вашем окружении наверняка найдутся заядлые геймеры, а новости из индустрии игр зачастую не обходят и вас стороной. Это положение дел приводит к вопросам: а что же такое видеоигры и какое место они занимают в жизни человека? Поиском ответов на них занимается дисциплина game studies. Александр Ветушинский – один из ведущих российских представителей этого направления исследований. Его книга «Игродром» – философское осмысление этапов развития игровой индустрии, анализ.

В процессе чтения вы познакомитесь с основами программирования и, в частности, языка JavaScript, а также выполните несколько небольших проектов. Один из самых интересных проектов — создание своего языка программирования.

Это практическое руководство разработчика программного обеспечения на Visual Basic .NET и ADO.NET, предназначенное для создания приложений баз данных на основе WinForms, Web-форм и Web-служб. В книге описываются практические способы решения задач доступа к данным, с которыми сталкиваются разработчики на Visual Basic .NET в своей повседневной деятельности. Книга начинается с основных сведений о создании баз данных, использовании языка структурированных запросов SQL и системы управления базами данных Microsoft SQL Server 2000.

Аннотация: Изложены основы программирования на языке Паскаль. По ходу обучения решаются десятки задач (использован проектный подход). От читателя не требуется начальных познаний в программировании, но круг затронутых тем ориентирует его в профессиональную область. Книга адресована школьникам средних и старших классов, желающим испытать себя в «олимпийских схватках». Будет полезна студентам-первокурсникам и преподавателям информатики.

Насколько велики на самом деле «большие данные» – огромные массивы информации, о которых так много говорят в последнее время? Вот наглядный пример: если выписать в линейку все цифры 0 и 1, из которых состоит один терабайт информации (вполне обычная емкость для современного жесткого диска), то цепочка цифр окажется в 50 раз длиннее, чем расстояние от Земли до Сатурна! И тем не менее, на «большие данные» вполне можно взглянуть в человеческом измерении. Эрец Эйден и Жан-Батист Мишель – лингвисты и компьютерные гении, создатели сервиса Google Ngram Viewer и термина «культуромика», показывают, каким образом анализ «больших данных» помогает исследовать трудные проблемы языка, культуры и истории.

Это не совсем книга. Просто по ходу работы и изучения пакета у меня накопилось немало заметок, которые я в конце концов собрал воедино и опубликовал с оглавлением и под единым названием. Данные заметки относятся к версиям 4 и 5 пакета MySQL. По ходу текста особо отмечены места, относящиеся к специфической версии пакета.