Tomasz Grysztar - Flat Assembler 1.64. Мануал программера

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

Tomasz Grysztar - Flat Assembler 1.64. Мануал программера краткое содержание

Flat Assembler 1.64. Мануал программера - описание и краткое содержание, автор Tomasz Grysztar, читайте бесплатно онлайн на сайте электронной библиотеки LibKing.Ru

Flat Assembler 1.64. Мануал программера - читать онлайн бесплатно полную версию (весь текст целиком)

Flat Assembler 1.64. Мануал программера - читать книгу онлайн бесплатно, автор Tomasz Grysztar
Тёмная тема
Сбросить

Интервал:

Закладка:

Сделать

Последний и самый гибкий способ задания меток — это использование директивы « label». За этой директивой должно следовать имя метки, далее, опционально, размер оператора (может предваряться двоеточием), и далее, также опционально, оператор « at» и числовое выражение, определяющее адрес, на который данная метка должна ссылаться. Например, « label wchar word at char» определяет новую метку для 16-битных данных по адресу « char». Теперь инструкция « mov ax,[wchar]» после компиляции будет выглядеть так же, как « mov ax,word [char]». Если адрес не указан, директива « label» будет ссылаться на текущий адрес. Таким образом, « mov [wchar],57568» скопирует два байта, тогда как « mov [char],224» скопирует один байт на тот же адрес.

Метка, имя которой начинается с точки, обрабатывается как локальная, и её имя прикрепляется к имени последней глобальной метки (с названием, начинающемся с чего угодно, кроме точки) для создания полного имени этой метки. Так, вы можете использовать короткое имя (начинающееся с точки) где угодно перед следующей глобальной меткой, а в других местах вам придется пользоваться полным именем. Метки, начинающиеся с двух точек — исключения. Они имеют свойства глобальных, но не создают новый префикс для локальных меток.

« @@» обозначает анонимную метку, вы можете определить её множество раз. Символ « @b» (или эквивалент « @r») ссылается на ближайшую предшествующую анонимную метку, а символ « @f» ссылается на ближайшую после неё анонимною метку. Эти специальные символы нечувствительны к регистру.

1.2.4 Числовые выражения

В предыдущих примерах все числовые выражения были обычными числами, константами или метками. Но они могут быть более сложными, использовать арифметические или логические операторы для вычисления во время компиляции. Все эти операторы с их значениями приоритета перечислены в таблице 1.4.

Таблица 1.4 Арифметические и логические операторы в порядке приоритета
Операции с высшим приоритетом выполняются первыми однако вы конечно можете - фото 4

Операции с высшим приоритетом выполняются первыми, однако вы, конечно, можете изменить такой образ действий, заключив некоторые части выражения в скобочки. « +», « -", « *» и « /» — это стандартные арифметические операции, « mod» вычисляет остаток от деления нацело. « and», « or», « xor», « shl», « shr» и « not» совершают те же логические операции, что и инструкции ассемблера с такими же названиями. « rva» характерна только для формата вывода PE и производит превращение адреса в RVA.

Числа в выражениях по умолчанию обрабатываются как десятичные, двоичные числа должны иметь « b» в конце, восьмеричные числа должны заканчиваться на букву « o», шестнадцатеричные цифры должны начинаться символами « 0x» (как в языке C), или символом « $» (как в языке Pascal) или должны заканчиваться буквой « h». Также заключенная в кавычки строка при включении в выражение будет конвертирована в число — первый символ станет минимальным значащим байтом числа. Числовые выражения, используемые как значения адреса, могут также содержать любой из общих регистров, используемых для адресации, они могут быть сложены или умножены на подходящие значения так, как это позволено в инструкциях архитектуры x86.

Также есть несколько специальных символов, которые могут быть использованы в числовом выражении. Первое — это « $», которое всегда равно значению текущего смещения, тогда как « $$» равно базовому адресу текущего диапазона адресов. Следующий символ — « %» — это номер текущего повтора в частях кода, которые повторяются, благодаря использованию некоторых специальных директив (смотрите 2.2). Также существует символ « %t», который всегда равен текущей отметке времени.

Любое численное выражение также может состоять из одного значения с плавающей точкой (flat assembler не может производить во время компиляции операции с плавающей точкой) в научной записи. Для распознания компилятором, эти значения должны содержать в конце букву « f», либо включать в себя по крайней мере один символ " .» или « E». Так, « 1.0», « 1E0» и « 1f» определяют одно и то же значение с плавающей точкой, когда как просто « 1» определяет целочисленное значение.

1.2.5 Переходы и вызовы

Операнд любого перехода или инструкция вызова может предваряться не только операторами размера, но также одним из операторов, определяющих тип перехода: « near» или « far». Например, если ассемблер в 16-битном режиме, инструкция « jmp dword [0]» станет далеким переходом, а если ассемблер в 32-битном режиме, она станет близким переходом. Чтобы заставить эту инструкцию обрабатываться по-разному, используйте формы « jmp near dword [0]» или « jmp far dword [0]».

Если операнд близкого перехода это немедленное значение, ассемблер, если возможно, сгенерирует кратчайший вариант этой инструкции перехода (но не будет создавать 32-битную инструкцию в 16-битном режиме или 16-битную инструкцию в 32-битном режиме, если оператор размера точно её не определит). Заданием оператора размера вы можете заставить ассемблер всегда генерировать длинный вариант (например, « jmp word 0» в 16-битном режиме или « jmp dword 0» в 32-битном режиме) или всегда создавать короткий вариант и завершаться с ошибкой, когда это невозможно (например « jmp byte 0»).

1.2.6 Установки размера

Если инструкция использует некоторую адресацию в памяти, по умолчанию будет генерироваться кратчайшая 8-битная форма, если значение адреса попадает в нужный диапазон, но он может быть изменен с помощью операторов « word» и « dword» перед адресом в квадратных скобках (или после оператора « ptr»). Такое размещение оператора размера также может быть использовано для установки размера адреса, отличного от размера, установленного в данном режиме по умолчанию.

Инструкции « adc», « add», « and», « cmp», « or», « sbb», « sub» и « xor» с первым 16-ти или 32-битным операндом по умолчанию генерируются в укороченной 8-битной форме, если второй операнд — это непосредственное значение, применимое для предписанных 8-битных значений. Она также может быть изменена операторами « word» и « dword» перед такими значениями. Сходные правила применимы к инструкции « imul» с непосредственным значениям в качестве последнего операнда.

Непосредственное значение как операнд для инструкции «push» без оператора размера, по умолчанию обрабатывается как слово, если ассемблер 16-битном режиме, и как двойное слово, если FASM в 32-битном режиме. Короткая 8-битная форма используется по возможности, операторы размера « word» и « dword» могут заставить инструкцию « push» быть сгенерированной в более длинной форме. Мнемоники « pushw» и « pushd» указывают ассемблеру сгенерировать 16-битный или 32-битный код без принуждения его использовать длинную форму инструкции.

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

Интервал:

Закладка:

Сделать


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

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




Flat Assembler 1.64. Мануал программера отзывы


Отзывы читателей о книге Flat Assembler 1.64. Мануал программера, автор: Tomasz Grysztar. Читайте комментарии и мнения людей о произведении.


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

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