Просмотр полной версии : Кросс Асмы
Какой из кросс ассемблеров для спеки может понять
вот такое
точнее сказать правильно интерпретировать вот такую запись
;RAY 1,1,H,L,D,E,y,x
MACRO RAY
mainplus=\0 ;основное направление положительно
secplus=\1 ;побочное направление положительно
;\2=основное направление для hl
;\3=побочное направление для hl
;\4=основное направление для de
;\5=побочное направление для de
;\6=основное направление
;\7=побочное направление
;LD DE,(cur\7\6)
cur\0\1\7\6=$+1
LD DE,0
LD A,E ;основное направление
;IFN mainplus ;основное направление положительно
; CPL ;1-основное направление
; LD E,A
;ENDIF
LD LX,A ;IX=dist*cos
MULPOS
IFN secplus ;побочное направление положительно
ADD A,D ;побочное направление
LD B,A
;LD HL,(curYX)
ray\0\1\7\6_YX=$+1
LD HL,0
IFN "\6\6"-"xx"
;LD D,H,E,L
;SET mapdifbit,E
ray\0\1\7\6_YX2=$+1
LD DE,0
ELSE
LD D,H,E,L
ENDIF
JNC raynshort\0\1\7\6
INC \5 ;e/d
LD A,(DE)
RLA
JC raysec\0\1\7\6
INC \3 ;l/h
raynshort\0\1\7\6
IFN "\6\6"-"yy"
SET mapdifbit,L
ENDIF
ELSE
LD L,A
LD A,D ;побочное направление
SUB L
LD B,A
;LD HL,(curYX)
ray\0\1\7\6_YX=$+1
LD HL,0
IFN "\6\6"-"xx"
;LD D,H,E,L
;SET mapdifbit,E
ray\0\1\7\6_YX2=$+1
LD DE,0
ELSE
LD D,H,E,L
ENDIF
JNC raynshort\0\1\7\6
LD A,(DE)
RLA
JC raysec\0\1\7\6
DEC \3,\5 ;l/h,e/d
raynshort\0\1\7\6
IFN "\6\6"-"yy"
SET mapdifbit,L
ENDIF
ENDIF
raynsec\0\1\7\6
INC HX
IFN mainplus ;основное направление положительно
INC \2 ;h/l
ENDIF
LD A,(HL)
RLA
JP C,rayhlq ;b=texx
IFN mainplus ;основное направление положительно
INC \4 ;d/e
ELSE
DEC \2,\4 ;h/l,d/e
ENDIF
LD A,B
IFN secplus ;побочное направление положительно
ADD A,C
ELSE
SUB C
ENDIF
LD B,A
JNC raynsec\0\1\7\6
IFN secplus ;побочное направление положительно
INC \5 ;e/d
ENDIF
LD A,(DE)
RLA
JC raysec\0\1\7\6
IFN secplus ;побочное направление положительно
INC \3 ;l/h
ELSE ;побочное направление отрицательно
DEC \3,\5 ;l/h,e/d
ENDIF
JP raynsec\0\1\7\6
raysec\0\1\7\6
EXD
LD A,B
IFN secplus ;побочное направление положительно
SUB C
DIVPOS
ELSE
ADD A,C
DIVNEG
ENDIF
IFN mainplus ;основное направление положительно
CPL
LD B,A ;b=texx
ELSE
LD B,A ;b=texx
CPL
ENDIF
JP raydeq
ENDM
jerri хочет ассемблер, в котором были бы явные конструкции, аналогичные этим - макросы с параметрическими метками и вложенная условная компиляция. А ещё чтобы можно было читать скомпилированные данные типа {$-256}.
да да он много хочет
просто совсем небольшой набор условных конструкций вызвал у cjasma взрыв мозга
вот вам пример
вот этот вот исходник при наличии DUP (смотри вариант 1) ругается на конец файла
если DUP убрать то не ругается
sjasm вложений не терпит... меня это сильно печалит...
TmK, терпит
просто в DUP:EDUP условное ассемблирование несделано
потому и вылетает
именно про это вложение я и имел ввиду)
Aprisobal
20.01.2012, 19:44
Предлагаю из ALASM создать чудо монстра - кросс-компилятор путем оборачивания его в эмулятор Unreal Speccy без графической части с 2мб расширенной памяти, постановки хуков на операции ввода-вывода диска и операции вывода на экран результатов компиляции. Это решит все вопросы совместимости, разве что нужно добавить дополнительные директивы, которые любит народ, например сохранение снапшота SNA/Z80.
Предлагаю из ALASM создать чудо монстра
И мне, и мне отсыпьте!!!! :)
Aprisobal, ты лучше sjasm почини а то при таких ограничениях ничего нормально в нем не напишешь
Aprisobal, ты лучше sjasm почини
И чтоб адекватно номер строки с ошибкой (если таковая вдруг появилась) выдавал, а то на текущий момент такое впечатление что sjasm.exe юзают исключительно с консоли.
Лажает при подсчёте строк.
Пишет (к примеру) ошибка в строке 593, а на деле это оказывается 598...
Мелочь, а напрягает.
Анализатор текста нужно поправить, что-ли...
(на предмет подсчёта строк и символов CR)
И чтоб адекватно номер строки с ошибкой (если таковая вдруг появилась) выдавал, а то на текущий момент такое впечатление что sjasm.exe юзают исключительно с консоли.
Лажает при подсчёте строк.
Пишет (к примеру) ошибка в строке 593, а на деле это оказывается 598...
Мелочь, а напрягает.
Анализатор текста нужно поправить, что-ли...
(на предмет подсчёта строк и символов CR)
Ну, во-первых, пруф, где там неправильно показывает. Во-вторых версию SJASMa, в-третьих, по SJASM есть отдельная прикреплённая ветка, можно было и туда написать :)
Какой из кросс ассемблеров для спеки может понять
вот такое
точнее сказать правильно интерпретировать вот такую запись
А это асм?
Это кусок Wolf48 (рейкастинг). Написано на ALASM.
Не надо впихивать невпихуемое :)
Все эти мега-макросы суть ересь невероятная. Я бы делал проще. В PreBuildStep-е сборочного скрипта генерил из шаблона временный asm файл, который бы скармливался ассемблеру.
Небольшой ликбез:
Что такое сборочный скрипт ?
Что угодно, начиная *.cmd и make файлов и заканчивая XML-ным описанием для всяких сборочных систем типа Nant.
Чем генерировать asm из шаблона
Чем угодно. Например Perl/Ruby/Python/Lua/etc. Любой скриптовый язык подходит замечательно.
Предлагаю из ALASM создать чудо монстра - кросс-компилятор путем оборачивания его в эмулятор Unreal Speccy без графической части с 2мб расширенной памяти, постановки хуков на операции ввода-вывода диска и операции вывода на экран результатов компиляции. Это решит все вопросы совместимости, разве что нужно добавить дополнительные директивы, которые любит народ, например сохранение снапшота SNA/Z80.
Кажется понял что хотел автор. Речь про отладчик, связанный с компилятором? А-ля ЯВУ? Мысль интересная, т.е. что можно это делать прямо из эдитора, жмёшь кнопарь - и у тебя или исполнение или трассировка.
Screw, кто такое будет писать?
компиляторы на спек это отдельная тема
Кажется понял что хотел автор. Речь про отладчик, связанный с компилятором? А-ля ЯВУ? Мысль интересная, т.е. что можно это делать прямо из эдитора, жмёшь кнопарь - и у тебя или исполнение или трассировка.
Про компилятор, связанный с эмулятором.
Помнится SAMStyle хотел присобачить к Xpeccy STS в качестве встроенного отладчика. Можете у него спросить чем закончилось такое скрещивание ужа с ежом.
Кажется понял что хотел автор. Речь про отладчик, связанный с компилятором? А-ля ЯВУ? Мысль интересная, т.е. что можно это делать прямо из эдитора, жмёшь кнопарь - и у тебя или исполнение или трассировка.
Про компилятор, связанный с эмулятором.
Помнится SAMStyle хотел присобачить к Xpeccy STS в качестве встроенного отладчика.
Слишком ректальный способ был предложен. Общепринятый подход - при компиляции генерируется отладочная информация, которую способен "переварить" отладчик. Именно из отладочной информации отладчик узнаёт имена переменных, соответствие (упрощённо говоря) адресов программы и номеров строк, имя файла-исходника. И позволяет отлаживаться по листингу, а не по дизасму.
Достаточно взять любой промышленный ассемблер, генерирующий отладочную инфу. Например IAR. И добавить поддержку этой инфы в отладчик. Например Unreal-овский.
Screw, кто такое будет писать?
компиляторы на спек это отдельная тема
Компиляторы не при чём. Достаточно любого вменяемого ассемблера, типа IAR-а. А скрипт написать в разы проще, чем изучать хитросплетения синтаксиса ущербных макросов. И это на порядки гибче и мощнее будет, чем *****-макросы.
Shadow Maker
25.01.2012, 12:17
Ну скрипт, который это вложенноеужасчо в нормальный перевариваемый вид приведет написать наверное можно... Но разборка синтаксиса подобного на уровне скрипта по-моему будет сложной.
Screw, напишешь?
написать ЧТО ?
вот несколько правил для ZX кросс асма с комментариями
Несколько бредовые правила, т.к. аргументация на уровне "хочу-не хочу". Вместо того чтобы писать очередной, стопицотый ассемблер, который, несомненно очень нужен (http://lurkmore.to/Всем_похуй), лучше бы запилить поддержку отладочной информации в имеющийся отладчик. Может я запилю, если руки дойдут и если один человек поделится форматом отладочной информации.
Ну скрипт, который это вложенноеужасчо в нормальный перевариваемый вид приведет написать наверное можно... Но разборка синтаксиса подобного на уровне скрипта по-моему будет сложной.
Зачем разборка синтаксиса ? Сразу генерировать асм-код из некоторого шаблона. Да и синтаксиса тут на три копейки, это не С++.
Screw, в какой отладчик? :)
всем и так все равно :)
обьясни зачем линкер для спека
и для чего он на пц?
Shadow Maker
26.01.2012, 00:05
Зачем разборка синтаксиса ? Сразу генерировать асм-код из некоторого шаблона. Да и синтаксиса тут на три копейки, это не С++.
Ну я наверное тогда не понял чего ты подразумевал под скриптами. Если срАзу генерить код, то куда проще знающему c++ человеку исправить sjasm имхо. Если ты знающий - мож поможешь jerri?
Отладочная инфа уже запилена и в унреал и в sjasm, если вы про метки и брейкпойнты в дебаггере.
Powered by vBulletin® Version 4.2.5 Copyright © 2026 vBulletin Solutions, Inc. All rights reserved. Перевод: zCarot