PDA

Просмотр полной версии : Кросс Асмы



jerri
18.01.2012, 22:59
Какой из кросс ассемблеров для спеки может понять
вот такое
точнее сказать правильно интерпретировать вот такую запись



;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

alone
18.01.2012, 23:37
jerri хочет ассемблер, в котором были бы явные конструкции, аналогичные этим - макросы с параметрическими метками и вложенная условная компиляция. А ещё чтобы можно было читать скомпилированные данные типа {$-256}.

jerri
19.01.2012, 00:10
да да он много хочет
просто совсем небольшой набор условных конструкций вызвал у cjasma взрыв мозга

вот вам пример

jerri
19.01.2012, 00:11
вот этот вот исходник при наличии DUP (смотри вариант 1) ругается на конец файла
если DUP убрать то не ругается

TmK
20.01.2012, 00:17
sjasm вложений не терпит... меня это сильно печалит...

jerri
20.01.2012, 09:56
TmK, терпит
просто в DUP:EDUP условное ассемблирование несделано
потому и вылетает

TmK
20.01.2012, 15:00
именно про это вложение я и имел ввиду)

Aprisobal
20.01.2012, 19:44
Предлагаю из ALASM создать чудо монстра - кросс-компилятор путем оборачивания его в эмулятор Unreal Speccy без графической части с 2мб расширенной памяти, постановки хуков на операции ввода-вывода диска и операции вывода на экран результатов компиляции. Это решит все вопросы совместимости, разве что нужно добавить дополнительные директивы, которые любит народ, например сохранение снапшота SNA/Z80.

Vitamin
20.01.2012, 20:13
Предлагаю из ALASM создать чудо монстра
И мне, и мне отсыпьте!!!! :)

jerri
21.01.2012, 09:59
Aprisobal, ты лучше sjasm почини а то при таких ограничениях ничего нормально в нем не напишешь

Destr
21.01.2012, 19:46
Aprisobal, ты лучше sjasm почини
И чтоб адекватно номер строки с ошибкой (если таковая вдруг появилась) выдавал, а то на текущий момент такое впечатление что sjasm.exe юзают исключительно с консоли.
Лажает при подсчёте строк.
Пишет (к примеру) ошибка в строке 593, а на деле это оказывается 598...
Мелочь, а напрягает.
Анализатор текста нужно поправить, что-ли...
(на предмет подсчёта строк и символов CR)

GriV
21.01.2012, 20:48
И чтоб адекватно номер строки с ошибкой (если таковая вдруг появилась) выдавал, а то на текущий момент такое впечатление что sjasm.exe юзают исключительно с консоли.
Лажает при подсчёте строк.
Пишет (к примеру) ошибка в строке 593, а на деле это оказывается 598...
Мелочь, а напрягает.
Анализатор текста нужно поправить, что-ли...
(на предмет подсчёта строк и символов CR)
Ну, во-первых, пруф, где там неправильно показывает. Во-вторых версию SJASMa, в-третьих, по SJASM есть отдельная прикреплённая ветка, можно было и туда написать :)

GM BIT
21.01.2012, 21:23
Какой из кросс ассемблеров для спеки может понять
вот такое
точнее сказать правильно интерпретировать вот такую запись

А это асм?

alone
22.01.2012, 02:32
Это кусок Wolf48 (рейкастинг). Написано на ALASM.

Screw
24.01.2012, 19:52
Не надо впихивать невпихуемое :)

Все эти мега-макросы суть ересь невероятная. Я бы делал проще. В PreBuildStep-е сборочного скрипта генерил из шаблона временный asm файл, который бы скармливался ассемблеру.

Небольшой ликбез:
Что такое сборочный скрипт ?
Что угодно, начиная *.cmd и make файлов и заканчивая XML-ным описанием для всяких сборочных систем типа Nant.

Чем генерировать asm из шаблона
Чем угодно. Например Perl/Ruby/Python/Lua/etc. Любой скриптовый язык подходит замечательно.

GriV
24.01.2012, 20:42
Предлагаю из ALASM создать чудо монстра - кросс-компилятор путем оборачивания его в эмулятор Unreal Speccy без графической части с 2мб расширенной памяти, постановки хуков на операции ввода-вывода диска и операции вывода на экран результатов компиляции. Это решит все вопросы совместимости, разве что нужно добавить дополнительные директивы, которые любит народ, например сохранение снапшота SNA/Z80.
Кажется понял что хотел автор. Речь про отладчик, связанный с компилятором? А-ля ЯВУ? Мысль интересная, т.е. что можно это делать прямо из эдитора, жмёшь кнопарь - и у тебя или исполнение или трассировка.

jerri
24.01.2012, 21:02
Screw, кто такое будет писать?
компиляторы на спек это отдельная тема

Vitamin
24.01.2012, 21:03
Кажется понял что хотел автор. Речь про отладчик, связанный с компилятором? А-ля ЯВУ? Мысль интересная, т.е. что можно это делать прямо из эдитора, жмёшь кнопарь - и у тебя или исполнение или трассировка.
Про компилятор, связанный с эмулятором.
Помнится SAMStyle хотел присобачить к Xpeccy STS в качестве встроенного отладчика. Можете у него спросить чем закончилось такое скрещивание ужа с ежом.

Screw
24.01.2012, 21:34
Кажется понял что хотел автор. Речь про отладчик, связанный с компилятором? А-ля ЯВУ? Мысль интересная, т.е. что можно это делать прямо из эдитора, жмёшь кнопарь - и у тебя или исполнение или трассировка.


Про компилятор, связанный с эмулятором.
Помнится SAMStyle хотел присобачить к Xpeccy STS в качестве встроенного отладчика.

Слишком ректальный способ был предложен. Общепринятый подход - при компиляции генерируется отладочная информация, которую способен "переварить" отладчик. Именно из отладочной информации отладчик узнаёт имена переменных, соответствие (упрощённо говоря) адресов программы и номеров строк, имя файла-исходника. И позволяет отлаживаться по листингу, а не по дизасму.

Достаточно взять любой промышленный ассемблер, генерирующий отладочную инфу. Например IAR. И добавить поддержку этой инфы в отладчик. Например Unreal-овский.


Screw, кто такое будет писать?
компиляторы на спек это отдельная тема

Компиляторы не при чём. Достаточно любого вменяемого ассемблера, типа IAR-а. А скрипт написать в разы проще, чем изучать хитросплетения синтаксиса ущербных макросов. И это на порядки гибче и мощнее будет, чем *****-макросы.

jerri
24.01.2012, 23:38
Screw, напишешь? :)

jerri
25.01.2012, 10:46
в спорах смысла нет

Shadow Maker
25.01.2012, 12:17
Ну скрипт, который это вложенноеужасчо в нормальный перевариваемый вид приведет написать наверное можно... Но разборка синтаксиса подобного на уровне скрипта по-моему будет сложной.

Screw
25.01.2012, 18:03
Screw, напишешь?

написать ЧТО ?


вот несколько правил для ZX кросс асма с комментариями
Несколько бредовые правила, т.к. аргументация на уровне "хочу-не хочу". Вместо того чтобы писать очередной, стопицотый ассемблер, который, несомненно очень нужен (http://lurkmore.to/Всем_похуй), лучше бы запилить поддержку отладочной информации в имеющийся отладчик. Может я запилю, если руки дойдут и если один человек поделится форматом отладочной информации.


Ну скрипт, который это вложенноеужасчо в нормальный перевариваемый вид приведет написать наверное можно... Но разборка синтаксиса подобного на уровне скрипта по-моему будет сложной.

Зачем разборка синтаксиса ? Сразу генерировать асм-код из некоторого шаблона. Да и синтаксиса тут на три копейки, это не С++.

jerri
25.01.2012, 22:11
Screw, в какой отладчик? :)
всем и так все равно :)
обьясни зачем линкер для спека
и для чего он на пц?

Shadow Maker
26.01.2012, 00:05
Зачем разборка синтаксиса ? Сразу генерировать асм-код из некоторого шаблона. Да и синтаксиса тут на три копейки, это не С++.

Ну я наверное тогда не понял чего ты подразумевал под скриптами. Если срАзу генерить код, то куда проще знающему c++ человеку исправить sjasm имхо. Если ты знающий - мож поможешь jerri?

Отладочная инфа уже запилена и в унреал и в sjasm, если вы про метки и брейкпойнты в дебаггере.