Ок ... Почитал ...Цитата:
Сообщение от Shadow Maker
Сейчас подготовлю новую версию, в которой есть листинг компиляции и проверка на переполнение строки !!!
Вид для печати
Ок ... Почитал ...Цитата:
Сообщение от Shadow Maker
Сейчас подготовлю новую версию, в которой есть листинг компиляции и проверка на переполнение строки !!!
Ну вот ... Очередная версия ... Добавил команду OpenListFile, после неё вся информация о компиляции будет писаться в файл ... Не знаю, может не очень удобно данные будут там расположены, но надеюсь, что удобно ... Там два параметра, второй сейчас игнорируется ... Я его оставил на случай разных взглядов о листинге ... Кстати, в листин отгружаются все найденные ошибки !!! И сделана проверка на переполнение длины строки !!! Ну и локальные метки то же реализованы, кстати, там автоматом получаются и локальные макросы !!! Если вам нужно вытащить метку в макросе из другого макроса, то перед меткой поставьие точку, и укажите полный путь ко всем локальным вложениям !!!
---------EXAM-------
OpenListFile "filename.lst",0
---------------------
Качайте, пользуйтесь, всегда с рад Вам !!!
http://www.entire.nm.ru/coding/asam.zip
У меня появилась идея ... Может этот глюк из-за кода табуляции ... Хотя я отчётливо помню, что исправлял его, но: - "кто его знает, о чём он мечтает" ...Цитата:
Сообщение от Alex/AT
Тут в прошлой версии был глюк, если не отключить сохранение в листинг, то ошыбки выдаёт ... Вот новый вариант, более исправленный !!!
http://www.entire.nm.ru/coding/asam.zip
Очередная исправленная версия, кто хочет, удачи ... =)
http://www.entire.nm.ru/coding/asam.zip
Robus, сори, оффтоп, но судя по постам человек (Proteus) знает методы упаковки различных файлов. Поэтому вопрос к нему тут или может ты знаешь чего нибуть по этому поводу?
2 Proteus
Не подскажешь, как можно узнать чем запакован ELF бинарник? Можеть есть какие анализаторы или просто по какому нибуть признаку?
Помоги плиз разобраться - очень надо. За мной не заржавеет.
Спасиб!
Moderatorial: Фишка, пиши им в приват и не засоряй тему, ага? Не надо засорять тему оффтопом! И соответственно вы (Робус, Протеус, etc.) тоже в приват отвечайте. Dixi.
Супер-гига-мега исправленная версия ... Было парочку ошибок, например если сделать смещение адресса PHASE / UNPHASE, то любая команда BIT, SET и т.д., не верно компилировалась ...
Качайте: http://entire.nm.ru/coding/asam.zip
Недавно капался в словаре, и был очень огарчён, оказывается слово "компилировать" означает - использовать труд другого человека, чаще всего это слово используется в критике произведений. Ну а "компилятор" это человек, который использовал чей-то труд ... Вот так вот, сколько программировал а в итоге сам, получается, ничего не написал ... ХЕХ ... =(
А скажи, реально ли перекомпилировать сие чудо под 186 проц (или 86), а то в PocketDos'е не пускается, а охота "на коленках" кодить =)
Ох ... Нет, это не реально ... Я ещё в 94-ом году не понимал зачем люди поддерживают 086, как и 286 ... Реальная польза от Intel'а пошла с 386-ого, до этого этот процессор вообще бесполезная консервная банка ... Кроме всего в язык встроенный эмулятор, он написан доп 386-ой, да и сам компилятор требует не меньше чем 386, поскольку там очень много процедур написаны на АСМЕ !!! Так что прошу прощение !!! Хотя, конечно, можно было бы извратиться и переписать весь язык на IF'ы и FOR'ы, но это так много времени займёт ... На это тему есть CJASM, попроси перекомпилировать его, он как раз написан на ИФАХ (СИ) ... В этом форуме о нём много говорят ...Цитата:
Сообщение от acidrain
А сколько процентов POCKET'ов со 186'ым ??? Поскольку мы год назад хотели делать на внутреннастях от Poket'а прибор, но потом отказались из-за постоянной модернизации и удишевлении техники, что приводило к нестабильности ... Но я видел Poket'ы с 386'ыми !!!
Не бредь, плиз. x86 процессоры в КПК вообще не используются. Речь выше шла о PocketDOS - эмуляторе 8086/80186 машины на обычном PocketPC.Цитата:
Сообщение от Robus
0% =) Эмулятор доса PocketDos (он то и поддерживает 186 =) ), есть еще dosbox (он лучше, на нем даже вынь до 95-го пускается), но на моем покетпц 2002 не идет =(Цитата:
Сообщение от Robus
Точнее на обычном риске (армы, мипсы, xscale ипр.) У меня х-скале на 400 мгцЦитата:
Сообщение от Shiru
sjAsm не умеет делать forward reference (как и практически все кросс-асмы, а я привык к tasm)Цитата:
Сообщение от Shadow Maker
а ASAM что-то вообще никакого списка ошибок не дает. неясно вообще в чем проблема. то ли импорт не пашет, то ли метка не так написана. то ли ошибка где. в общем я так и не смог на нем откомпилить многофайловый проект.
А тормозит он оп причине того что список инструкций весь внешний (в файле). Конечно - это клево, но вообще наверно можно было бы это дело ускорить (байт-компилить как-нибудь этот cmd файл, например)..
А про Апри не знаю.
Что не то ??? Ошибки он выдаёт, если они есть !!! Может ошибок нет !!! А все файлы должны быть просто в текстовом виде !!! Сам TASM, который BY RST, хранил текст в своём личном, запакованном виде, и, конечно, я не делал импорт таких файлов !!! Многофайловый проект требует всего-то команды INCLUDE "xxxx.xxx", но если бы что-то было не так написано, то он обязательно выдал бы сообщение об ошибке !!! Пришли мне на мыло то, что не компилится, наверное что-то банальное !!!Цитата:
Сообщение от Dexus
А тормозит он не из-за cmd, кстати, его можно внедрить прямо в exe'шник, но из-за того, что я его постоянно дополняю, я этого пока не сделал. Он тормозит из-за того, что я некоторые вещи написал не на ASM'е, просто нужно было по-скорее доделать его для моей работы, и подумал, что на языке высокого уровня будет быстрее, оказалось и хуже и дольше ... Но очень скоро я его обязательно турбирую !!! =)
Кстати, в конце компилируемого блока можно поставить такую команду - SaveLabels "xxxx.txt", куда он сохранит все метки, которые были при компиляции и да же сообщит использовали-ли их, или они просто занимали место в тексте !!!
Если есть вопросы, напиши мне на RobusAsmCoder@ukr.net !!!
Robus как всегда, в своём репертуаре. Свято верит в силу низкоуровневой оптимизации, и ничего не хочет знать про алгоритмическую;) А ведь другие, более быстрые ассемблеры, не на ассме написаны... Вот-же засада, да?:)Цитата:
Он тормозит из-за того, что я некоторые вещи написал не на ASM'е
Тем не менее 3хпроходных кросс-асмов я больше не видел, у которых можно код подгонять по "нижней" границе, и при этом иметь достаточно гибкие "выражения".
Но факт, что низкоуровневой оптимизацией надо заниматься в последнюю очередь, когда алгоритмически уже ничего не сделаешь.
На PC компиляторы (сишные) и так оптимизируют _очень_ неплохо. И смысла всовываться со своим асмом особо нету. Единственный смысл был вторгаться в высокоуровневый язык со своими вставками - это в паскале. Не редко это был единственный способ. Но ИМХО асм - не тот случай. Спектрумовский подход тут "не катит".
Robus
Откомпилил-таки.
проблема была именно в INCLUDE
он почему-то на отсутствие файла не ругался (а ругался на отсутствие переменной которая должна в этом файле определяться)... и когда перед инклудом стояла куча пробелов - компилер его вообще как метку воспринимал, а не как директиву.
На все ошибки один ответ: "ERROR ... Label Not Found Or Instruction Error"
сругнулся на строчку
хоть и поменял наКод:KEYNUM DEFM "0123456789abcdef"
все равно ругается.Код:KEYNUM DS "0123456789abcdef"
Потом еще небольшая проблема была с IXH/IXL (у Вас - XH/XL) и написанием "SLL" для "SLI".
P.S.: Пишу тут, потому как Ваша личка переполнена.
DS???? Почему DS???? Может все такие DB, а не DS? А по поводу команд - там же список этих самых команд внешний, сам же писал. Возьми да и поправь в текстовом редакторе так, как тебе нравится. Там же все равно, даже какой нить VLEVOSDVIG вместо SLL написать можно :)Цитата:
Сообщение от Dexus
PS - На будущее. Все вопросы по ASAM задавайте в теме про ASAM, окей? Про ошибки и прочее компиляторов ассемблера пишите в темах про эти самые компиляторы ассемблера, благо на каждый уже есть по здоровущей теме. Впредь подобные сообщения буду удалять или переносить.
У меня более сложная "болезнь", я верю в алгоритм написанный на асме !!!Цитата:
Сообщение от Shiru
А по-поводу скорости, тут можно легко поспорить ... Задачи у асмов разные, например те же метки которые будут в будущем ... Кроме того есть асм BY RST, в котором всё что не команда считается меткой, так что напишешь:
LDIR
LIDR
Первое будет как команда, второе будет как метка, и ошибок не будет, за-то это универсально, и на такую ошибку я нарывался разве что в глубоком детстве ...
Просто я не хочу становиться в позу "ЗЮ", что бы программировать ... Язык должен быть гибким изначально, а не требовать от тебя каких-нибудь пробелов или написание маленькими буквами. Про тупость о метках, которые нужно регестрировать перед текстом программы я вообще молчу.
Есть такая штука как TASM на ПиЦи, который так же притормаживает, у него те же проблемы как с LIDR'ом ... Если ты знаешь уникальный способ АЛГОРИТМА компиляции, напиши асм под ZX, ведь это так просто ... Сравнить одну БИБЛИЙОТЕКУ с другой на СИ и по результату положить код той или иной команды ...
Я не занимаюсь осуждением каких-либо асмов, как и ВАШЕГО способа программирования, я просто делаю то чего ещё нет ...
А о DEFM, я как-то забыл ... И вправду была такая команда, нужно будет её наколдовать ... Хотя это тот же DB !!!
что там с ASAM? проект закрыт?
Не в коем случае ... Он постоянно обновляется ... Просто народ не очень жаждит пользоваться ... Я всё пишу только на своём асме, другие просто не компилируют мои работы из-за логических недоработок ... Но вообще-то в текущей версии сделано почти всё, что можно придумать ... А что интересует ??? Буду рад разъяснить, добавит, показать, снять ... не снимать не буду =) ... Шутка ...Цитата:
Сообщение от jim
хотелось бы юзабельности побольше
Что значит юзабельнее ??? Текстового редактора я к нему не писал, поскольку это компилятор. А в остальном он как никогда юзабельный !!!Цитата:
Сообщение от jim
имхо очень в жилу был бы "компилятор" текстовых таблиц с инструкциями в формат, который не надо пережевывать при запуске асма..Цитата:
Сообщение от Robus
а если бы он (асм) еще под юниксами работал... :rolleyes:
С юниксом есть проблема ... Я пользуюсь компилятором, которым компилируется компилятор (TMT-Pascal), который и так ворованный. Можно скомпилить под WIN и под OS/2, а юникс в следующей версии, которая стоит $300 да и ещё продаётся только в NEW-YORK'е ...Цитата:
Сообщение от boo_boo
А вот таблицы не проблема ... Придумай формат таблиц или хотя бы какие-нибудь стандарты, например первый столбец всегда в таких-то координатах, и я сделаю. Кстати, в любой момент можно сделать отдельный EXE, который запустить прямо в тексте компилируемой программы. В этом EXE легко делается любая перекодировка таблиц, передать параметры так же просто прямо в компиляторе.
Тут малость глюки убраны, поэтому выкладываю последнюю версию.
Разберёмся ... И всё получится ... =)
Да ... Тут мой маленький просчёт ... Размер названия файла привышает 8-мь символов ... Забыл сконвертировать ... На утро постараюсь выложить версию с этой добавкой ... Но если переименовать "flashline.az8" в "flashlin.az8", то всё заработает ...
".ZX.Loader" это внутренний(в самой программе) макрос ... У меня всё что начинается с точки "." и заканчивается ".." это макросы. например:
А если в имени макроса первый символ есть числовое значение то считается что это повтор! напримерКод:;Сам макрос
.ZX.Loader
LD A,@.0
XOR @.1
..
; Итеперь используем ранее заданный макрос
ZX.Loader 123,210
.100
DB @.C-1
..
В памяти пропишется 0,1,2 ... 98,99 !!! Если вместо @.C написать @.c, то счётчик будет на еденицу меньше. Также вместо ".100", можно написать "REP 100", что будет индентично !!!
-----
А вот с длинным имененм файла я разберусь ... =)
Исправленную версию в СТУДИЮ!
З.Ы.
Надо тебе Гифт налабать :) Пошленький какой-то... :) Хммм... Или подарить тебе часть из "ненаписанного" (No "MultiColor" Demo)?
Осталось вспомнить Таблицу Прерываний... Может пришлешь? (Вспоминать тяжко :) )
Вот, значит, последняя версия ... Для ZX’а тем практически ничего не изменилось. Лишь добавлено компрессия в математическую компиляцию. Я её использую для программирования микроконтроллеров, что бы легко сопрягать математику с ассемблером. Например:
LET A=((A+B)/C+123.567/256)
Это откомпилируется в простые операции, раскрывая скобки. Как показывает практика, что бы написать ЛЮБЫЕ программы на микроконтроллерах, этого мне хватает, всё остальное я делю на асме.
Теперь INT’ы:
Это же, прикреплено в LESS-007.zip, грузани и посмотри ... =)Код:EQU $ASAM.PASS.ERROR=1 ;Количество пустых компиляций, для
;устронения вложенных меток в дважды
;запаковынном блоке или больше.
INCLUDE "speccy.az8" ;Маленький набор утилит.
ORG 40000
JMP START
OrgInt INT,INT ;Утилита из Speccy.az8, устанавливающая в ближайшем
START: DI
LD SP,$
LD A,INT.VEC
LD I,A
LD HL,INT
LD (INT.VecAddr),HL
IM 2
EI
JMP $
INT: PUSHA ;Прерывание
POPA
EI
RET
SaveLabels "less-007.txt" ;Для примера сохраним все мекти, которые были
;в проекте
Длинные имена файлов пока не делал, но мне кажется, что это не есть камень преткновения для CODEING’а на ZX’е ... =)
Новые добавления.
1. Сделан 64-битовый математический блок. 10-ть знаков до и 10-ть знаков после запятой. Скорость мат-функций всего в два раза быстрее ВАСИКа. Не очень хорошё работает оптимезатор мат-функций, будет время доделаю. Пример
Вообщем посчитает. Как вы уже поняли VAR откушает 8 байт памяти на числовую операцию. Можете не писать =??? и тогд туда автоматом пропишется 0. Совет, не резервируйте регистры с именем "A", этим вы замените все аккумуляторы на точку памяти.Код:EQU $ASAM.PASS.ERROR=2
INCLUDE "asam-80.inc"
ORG 33025
MATH R_A-8*56+R_B/4 - 3*(SIN*R_B)
RET
VAR R_A=3
VAR R_B=-7
ASAM.MATH.INIT
Так же в мат-модуле есть внутренние регистры. Ежели вы использете хотя бы раз "MATH A=6553H.34", то под регистр "А" будет автоматически зарезервировано место.
Числовой формат: первые четыре байта это значение до запятой, последние четыре байта это значение после запятой.
2. Сделаны числовые метки. Допустим:
В итоге мы получаем метку "POPIK00213"Код:LAB EQU 213
POPIKLAB05 ;Как всегда кодировка винды не поддерживает нужные символы ...
3. Модернезирован макрос:
Ну и теперь у вас есть ифы ... Компилятор будет искать любые вариации разделяя их жёсткими сепараторами из макросов. Как появится время опишу все главные комманды.Код:.IF (<>) THEN√
;ЧТО-то
..
.IF (<=) THEN√
;ЧТО-то
..
.IF (=>) THEN√
;ЧТО-то
..
.IF (<) THEN√
;ЧТО-то
..
.IF (>) THEN√
;ЧТО-то
..
.IF (=) THEN√
;ЧТО-то
..
4. Сделаны метки с приоритетами:
Как вы заметили оператор EQUID резервирует метку _ASAM_IF_ELSE001. В квадратных скобках указывается приоритет. В "ELSE" он имеет 1, в "END IF" он 2. Ежели вы напишите:Код:
.IF (=) THEN√
ASAM_INC_IFC
MATH (@.0)-(@.1)
JZ _ASAM_IF_ELSE$ASAM.ASAM.IFC03
..
.ELSE
EQUID _ASAM_IF_ELSE$ASAM.ASAM.IFC03[1]=$
..
.END IF
EQUID _ASAM_IF_ELSE$ASAM.ASAM.IFC03[2]=$
_ASAM_IF_END$ASAM.ASAM.IFC03[2]
ASAM_DEC_IFC
..
В данном случае "ELSE" не учавствует в коде, и автоматически _ASAM_IF_ELSE001 будет равен _ASAM_IF_END001 и указывать на конец IF'а. Если:Код:IF 7=7 THEN
LD A,1
END IF
То в данном случае _ASAM_IF_ELSE001 будет компилятором встречаться дважды но в "END IF" будет иметь приоритет 2 и игнорироваться.Код:IF 7=7 THEN
LD A,1
ELSE
LD A,0
END IF
Имея фантазию вы легко сделаете любые операторы.
Роб, респект! Я уж подумал ты на свой компилятор забил давно ;)
Поверьте, то что я сейчас пишу тут это результат новогодних праздников !!! Эта работа просто ужас ... Я пол-года ничего кроме работы не вижу ... По три четыре поекта одновеменно пишу, к домашнему компьютеру вообще не подхожу ...
Зато есть очень серьёзные перспективы в плане Speccy. Возможно скоро будет новый Speccy с новой ОСью, если, конечно, наши еврейские партнёры не обломаюся ... Хоть этот проект и ради меня запустии в жизнь, и прибыли компании он не принесёт, но всё же ...
Набросал пару строк:
Вопрос автору: оно так и задумывалось, чтобы вот такой код транслировался в шесть байтов "ABCDEF", то есть без символа "X" посередине? :)Цитата:
ORG #10000-(AFTER-BEFORE)
BEFORE:
DB "ABC"
.IF ($ > #8000) THEN
DB "X"
..
DB "DEF"
AFTER:
SaveLabels "labels.txt"
* * *
UPDATE: Гм, впечатление такое, будто у меня .IF не работает вообще. Имеем код:
Получаем для меток BEFORE и AFTER значения #F000 и #F009 соответственно. Гм... :)Цитата:
ORG #F000
BEFORE:
DB "ABC"
.IF 0<1 THEN
DB "X"
.ELSE
DB "YY"
.END IF
DB "DEF"
AFTER:
SaveLabels "labels.txt"
Ммм ... Как бы более правильно объяснить ... Поскольку практически никто не пользовался ASAM'ом, я не особо расписывал макросы ...
Смотри: "." и ".." Это описание макроса или цикла ...
Всё, что идёт дальше это не особо но умный макрос, который не понимает IF. В данном случае ты попытался компилятору разъяснить что хочешь создать макрос. Когда я расписывал пример некого подобия бейсика, то я приводил пример макросов, которые потом превращается в код, причём код не оптимизированный.
Как я понял ты хочешь получить компиляцию отдельных строк по условию. Я в компиляторе не ставил задачи реализовывать условия, потому что для этого я в компилятор встроил эмулятор ZX-SPECTRUM'а, без видео, конечно.
Если тебя устраивает простой флаг, да нет, то можно сделать так:
Если тебе нужно более сложные операции, то их нужно описать, например:Код:FLAG EQU 1
.FLAG
DB "TRUE"
..
.1-FLAG
DB "FALSE"
..
То есть компилятор рассчитан на то, что программист сам себе создаст любые макросы, которые он считает удобными. Практика показывает, что мне хватает простого флага 0/1 ... Более сложные операции тянут за собой целые системы. Например я пишу текст для скролла и у меня есть шрифт. Зачем мне в памяти хранить графику для буквы, которая никогда не появится на экране ? Я пишу программу которая анализирует весь текст или тексты, и составляет таблицу. И пишу вторую программу которая по таблице сохраняет нужную графику каждой буквы. Далее для компилятора я использую команду SetTextXOR, в которой говорю, что далее всё что будет заключено в кавычки, нужно перекодировать. Например код буквы "A" станет каким-то кодом, который будет в таблице. И ву-а-ля, минимум памяти, и текст компактный.Код:;====================
;Это макрос описывающий сравнение входящего переметра A с B
;====================
.IF (<) THEN√
ORG 0
EQU $ZX.R.PC=16384
LD A,@.0 ;Параметр макроса А
CP @.1 ;Параметр макроса В
RLA
AND 1
LD C,A ;Запихиваем с ВС результат сравнения
LD B,0
EQU $ZX.R.Break=$+$ZX.R.PC
MoveMemAZ $ZX.R.PC,$ZX.R.PC,0,$-$ZX.R.PC ;Копируем из памяти компилятора в память эмулятора откомпилированный блок
RunEmulZX ;Запускаем откомпилированный код
ORG @.
EQU IF_FLAG=$ZX.r.BC ;Результат эмулятора ВС передаём во флаг
..
;========================
; Теперь сама программа которая использует макрос, который в совю очередь использует эмулятор
;========================
IF_FLAG EQU 0
ORG #8000
START
IF (7<6) THEN
.IF_FLAG
DB "A < B"
..
.1-IF_FLAG
DB "A > B"
..
SaveBIN "TEST.BIN",START,$-START
Да, я согласен, что нужно потратить время на эти макросы. Но за-то у тебя появляется возможность в макрос впихнуть целый код, который на уровне компилятора сам за тебя всё разберёт по-полочкам и в конце концов выдаст тебе конфетку, которая уже завёрнута в бумажку.
Сразу хочу предупредить ... RunEmulZX запускает эмулятор не взирая на то, все ли метки собрал компилятор ... Данный пример макроса был написан так, что бы входные параметры требовали только одного прохода. Если код внутри макроса сложный, то нужно использовать RunEmulZXne, то есть без ошибок до данного места. Но опять таки это не выгодно и наилучший способ предварительно, в отдельном файле создать все нужные макросы с внутренними кодами, записать их в отдельный файл. А уже при использовании макросов в программе грузить файл непосредственно в память эмулятора и запускать ... Вообщем я на этом написал кучу boot-loader'ов, скроллов, компрессоров и даже ОС для Speccy. Например в ОСи у меня создаются образы дисков для игры, в которую впихиваются тонны картинок, кода, музыки и лежат линейно, байт за байтом по образам. А в коде у меня это выглядит так:
Макросы ОСи сами добавляют нужный файл в образ, сами пакуют их и сами раздают ID каждому файлу. И в итоге в коде после раскрытия макроса это получается так:Код:LoadInData 'GFX\entire.scr', 18432
LD HL,20480
LD DE,22528+256
LD BC,256
LDIR
LD B,50*2
HALT
DJNZ $-1
LoadInData 'GFX\rob.scr', 16384
LD B,50*2
HALT
DJNZ $-1
LoadInData 'GFX\mellona.scr', 16384
LD B,50*2
HALT
DJNZ $-1
Этот ID мне не известен и не нужен, мне главное в тексте видеть, что я гружу. Так же можно создать таблицы из нужных нам файлов и грузить их по номеру ... Для этого я и создавал ASAM, для того, что бы одним нажатием у тебя собирался полностью рабочий проект.Код:LD HL,03765H ;ID файла
LD DE,16384 ;адрес куда грузить данный
CALL DOS.LOAD.FILEID
В одном из постов, ААА написал, что большинство времени уходит на допиливание лоадера. От этого я давно ушёл, лодаер LATRAX'а, например, трогался только один раз, где-то в августе. Если бы у меня хватило времени на загрузочную картинку, то тронул бы два раза.
Мне, наверное, понадобится еще посидеть над тем, что ты написал. :) Что-то плохо понимаю что к чему, особенно причем тут эмулятор. :)
Задача вот какая. Пусть есть две строки текста:
Мне нужно, чтобы в случае, если значение $ после первой строки больше #8000, между этими двумя строками появлялась еще одна строка:Цитата:
DB "ABC"
DB "DEF"
Как это можно оформить?Цитата:
DB "X"
* * *
Снова UPDATE: теперь понимаю, причем здесь эмулятор. :)
Возникают следующие вопросы:
1) Надо понимать так, что весь макропроцессор написан через вызовы эмулятора? То есть, непосредственно языком поддерживается только сама возможность определения и использования макросов, но не их раскрытия?
2) Эти вызовы эмулятора происходят на каждом проходе? Если да, то с какими значениями меток, в том числе $, если раскрытие макроса зависит от этих значений?
Скажем, если изменить немного твой код:
Как в этом случае будут вычисляться значения меток? Или во время трансляции мы должны получить ошибку?Цитата:
ORG #8000-(END-START)
START
IF ($=#8000-2) THEN
.IF_FLAG
DB "X"
..
.1-IF_FLAG
DB "YY"
..
END
SaveBIN "TEST.BIN",START,$-START
Вообще, что делает ASAM в случае циклических зависимостей по меткам т что считается и не считается им за циклическую зависимость?
Ага, то есть, знаки операций сравнения "<" и ">" это часть определения макросов IF, я правильно понимаю? И именно по этой причине параметры макросов обозначаются этими странными значками? :)
То есть, сам ассемблер непосредственно сравнения и другие операции не поддерживает?