Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Уникальные метки в Turbo Shell v.3.02

38K
18 апреля 2009 года
Mental_Force
23 / / 12.02.2009
Добрый вечер.

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

jmp Mark1

Mark1:

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

Создать данную тему побудили безрезультатные попытки поиска интересующего меня вопроса как на этом форуме, так и в других местах.

Единственное что нашел в гугле, так это вот такой пример:

Цитата:
Уникальное имя метки может формироваться формате, подобном следующему:
&имя.nnnnnn
где - nnnnnn - число, увеличивающееся на 1 для каждой следующей уникальной метки.

Другой возможный способ формирования, например:
имя&SYSNDX
где SYSNDX - предустановленное имя, имеющее числовое значение, начинающееся с 00001 и увеличивающееся на 1 для каждой следующей уникальной метки.



Понятия не имею для какого ассемблера данное объявление, но я так и не смог откомпилировать этот пример, компилятор указывал на синтактическую ошибку.

38K
21 апреля 2009 года
Mental_Force
23 / / 12.02.2009
Ребята, ну скажите же вы наконец как вы объявляете метки в ваших макросах, так чтобы их (макосы) можно было многократно и корректно использовать в одной пограмме.
349
21 апреля 2009 года
Phantom-84
656 / / 27.10.2005
Не знаю (точнее уже не помню) как в других ассемблерах, но в fasm'е локальные метки макросов нужно объявлять с помощью директивы local. Кроме того можно использовать псевдометки @@:
Код:
macro foo
{
  local loc

  xor ecx, ecx

loc:
  xchg ebx, ebx
  loop loc

@@:
  xchg ebx, ebx
  loop @b

}
38K
21 апреля 2009 года
Mental_Force
23 / / 12.02.2009
Да, это оно спасибо большое !
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог