PDA

Просмотр полной версии : Асмы и удобство разработки



moroz1999
19.04.2006, 14:02
Давно хотел поспрашивать вашего совета по следующему поводу:
Всё, что я пишу на асме (для себя), я делаю таким образом:
1. Под анрилом запускаю zxasm.
2. Компилю
3. Захожу в привязанный к нему STS
4. Сохраняю скопмпилированный файлик, рестарчусь, и запускаю заранее сделанный бейсиковский загрузчик, который грузит графику, таблицы, скомпилированный код и запускает их.

Что-то мне кажется, что это далеко не самый удобный метод работы, кто чего может посоветовать для облегчения/убыстрения этого процесса?

rasmer
19.04.2006, 14:12
Что-то мне кажется, что это далеко не самый удобный метод работы, кто чего может посоветовать для облегчения/убыстрения этого процесса?incbin, include - посмотри в описалове к Zxasm ? я просто уже не помню...

moroz1999
19.04.2006, 14:17
Можно кстати еще и другой асм посоветовать :)
Запросы к компилятору - самые простейшие, главное - удобство интерфейса, внешняя эргономичность и простота.

Sinus
19.04.2006, 14:45
Итак.

1) по поводу удобства интерфейса и прочего.
под win32 я писал для ZX так (просто теперь юзаю линух и свой эмуль):

эмуль - анрил. модель компа- Pentagon 512

асм - аласм (даже не самый новый). все incbin'ы и include'ы там есть. всё запускаю прямо из асмя безо всяких загрузчиков. сам асм и STS лежат в верхней памяти, по- этому моя прога их не затрагивает

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

некоторые советуют юзать кросс-ассемблеры, но мне так не удобно.
тем более что до сих пор нет ни одного кросс-асма который по удобству написания кода (именно по удобству написания, а не по навороченности и прочим макросам) дотягивал бы до аласма.
( на самом деле даже из нативных писишных асмов разве что только nasm можно назвать ассемблером. )

fk0
19.04.2006, 15:02
Давно хотел поспрашивать вашего совета по следующему поводу:
Всё, что я пишу на асме (для себя), я делаю таким образом:
1. Под анрилом запускаю zxasm.
2. Компилю


В это время что-то сбоит, например питание, и 10 часов кряду писанное гробится нахрен. Это именна та причина, по которой не следует использовать unreal speccy для таких задач.



Что-то мне кажется, что это далеко не самый удобный метод работы, кто чего может посоветовать для облегчения/убыстрения этого процесса?

EMUZ досовый. К нему Hitech-C и самодельные скрипты для загрузки таблицы
символов в emuz.

fk0
19.04.2006, 15:14
некоторые советуют юзать кросс-ассемблеры, но мне так не удобно.
тем более что до сих пор нет ни одного кросс-асма который по удобству написания кода (именно по удобству написания, а не по навороченности и прочим макросам) дотягивал бы до аласма.


Ассемблер -- эта такая программа, которая из *.as получает *.obj. Какое там может быть удобство именно ПИСАНИЯ не знаю. Оное у меня обеспечивается редактором (Vim).



( на самом деле даже из нативных писишных асмов разве что только nasm можно назвать ассемблером. )

А gas, или masm -- стало быть неассемблеры (именно так, слитно).

Alex/AT
19.04.2006, 16:16
Какое там может быть удобство именно ПИСАНИЯ не знаю.
Набор команд, функции по макросам, "короткие" записи.

Юзаю SJAsm+, на выходе получаю готовый SNA для отладки Ж)

moroz1999
19.04.2006, 17:15
спасибо всем!

а вообще, для меня идеал удобства был бы:
1. редактирую на пц в произовольном редакторе
2. компилирую в кроссассемблере в snapshot файл, который автоматом запускается в эмуле.

есть идеи как такого достичь?

moroz1999
19.04.2006, 17:16
Набор команд, функции по макросам, "короткие" записи.

Юзаю SJAsm+, на выходе получаю готовый SNA для отладки Ж)о! вот это я опробую!

Kurles
19.04.2006, 17:38
спасибо всем!

а вообще, для меня идеал удобства был бы:
1. редактирую на пц в произовольном редакторе
2. компилирую в кроссассемблере в snapshot файл, который автоматом запускается в эмуле.

есть идеи как такого достичь?Sjasm+. По синтаксису - почти аласм, есть возможность работать со спековскими форматами файлов (.trd, hobeta), можно из кода снапшот делать, плюс ко всему приятная фича - можно выгрузить метки на диск в файл, формат которого понимает Unreal, что бы он их во встроеном дебагере показывал. По поводу редактора - прикручивал к MuitiEdit'у поддержку Sjasm'а - более чем приятно. Можно было по меткам в тексте скакать, и на ошибки при ассемблировании позиционировать курсор. Полноценное IDE получилось.

Sinus
19.04.2006, 18:45
Ассемблер -- эта такая программа, которая из *.as получает *.obj. Какое там может быть удобство именно ПИСАНИЯ не знаю. Оное у меня обеспечивается редактором (Vim).

незнаю что такое *.as . может #?.asm ?
удобство писания - это НЕ редактор. это синтаксис к которому я привык.


А gas, или masm -- стало быть неассемблеры (именно так, слитно).

gas имеет весьма спецефичный синтаксис, непревычный программерам на x86 и z80. и конкретно мне этот синтаксис не нравится.

если фирма-разработчик процессора придумывает синтаксис, то надо им и пользоваться. а то получается ощущение винигреда (будто бы смешали 68k синтаксис с x86)

masm - да, это неассемблер. по крайней мере пользоваться им нельзя.

Rubts0FF
20.04.2006, 01:13
masm - да, это неассемблер. по крайней мере пользоваться им нельзя.
:v2_clapp: Серьезное заявление :v2_clapp:

Adramelek
20.04.2006, 04:58
В это время что-то сбоит, например питание, и 10 часов кряду писанное гробится нахрен. Это именна та причина, по которой не следует использовать unreal speccy для таких задач.Ты просто не в курсе всех возможностей US. ;)

nyuk
20.04.2006, 09:07
плюс ко всему приятная фича - можно выгрузить метки на диск в файл, формат которого понимает Unreal, что бы он их во встроеном дебагере показывал.
А можешь поподробнее объяснить, как этого добиться, или хотя бы где почитать?

fk0
20.04.2006, 11:18
Набор команд, функции по макросам, "короткие" записи.


Набор команд однозначно определяется целевым процессором.

"Функции по макросам", вероятно, умеет любой вменяемый МАКРОАССЕМБЛЕР.
Спектрумовские, за исключением ALASM, такой возможностью не обладают.
Да и ALASM не особо... Вменяемый макропроцессор в моём понимании, если что,
это m4.

Что такое "короткие записи" я не знаю.

fk0
20.04.2006, 11:22
спасибо всем!

а вообще, для меня идеал удобства был бы:
1. редактирую на пц в произовольном редакторе


Кто-то запрещает?



2. компилирую в кроссассемблере в snapshot файл, который автоматом запускается в эмуле.
есть идеи как такого достичь?

Нужно автоматом -- напиши соответствующий скрипт. "Снапшот" может сделать вменяемый компоновщик (большинство пропагандируемых здесь недоассемблеров его вообще не имеют) путём размещение кода в нужных адресах, размещения заголовка "снапшота" в соответствующем месте, стека и т.п. и путём
преобразования этого всего в *.bin -- готовый "снапшот".

fk0
20.04.2006, 11:35
незнаю что такое *.as . может #?.asm ?


У hitech -- *.as. У M$ -- *.asm. У GNU -- *.s. А так какая разница...



удобство писания - это НЕ редактор. это синтаксис к которому я привык.


Ну если привык... Тогда уже ничего не поможет. Хотя опять же наличие вменяемого макропроцессора сильно облегчает жизнь.



gas имеет весьма спецефичный синтаксис, непревычный программерам


Он вообще не предназначен для писания руками... Пользуйся NASM.



если фирма-разработчик процессора придумывает синтаксис, то надо им и пользоваться. а то получается ощущение винигреда (будто бы смешали 68k синтаксис с x86)


Согласен.


masm - да, это неассемблер. по крайней мере пользоваться им нельзя.

Дураков в микрософте нет.

fk0
20.04.2006, 11:37
Ты просто не в курсе всех возможностей US. ;)

Он уже для *.trd вместо read() научился mmap() и msync()?

Sinus
20.04.2006, 11:38
:v2_clapp: Серьезное заявление :v2_clapp:
Ну я думаю мне оно позволительно, ибо писал я на асмах много.. нет, не много, дохрена ;)
И в конце концов пришёл именно к nasm (если писать на пэцэ).

зы. оффтоп всё это. я завязываю.

Sinus
20.04.2006, 11:44
Ну если привык... Тогда уже ничего не поможет. Хотя опять же наличие вменяемого макропроцессора сильно облегчает жизнь.
вот такая моя доля ;)
а макросы я не люблю. ибо если сильно юзать макросы и прочие навороты, то начинаешь забывать как выглядит код.


Он вообще не предназначен для писания руками... Пользуйся NASM.
а я им и пользуюсь :cool:


Дураков в микрософте нет.
нету. но masm имеет крайне неудобный синтаксис. (особенно бесит оператор offset).

зы. чё то оно от спектрума и от тему далеко ушло. я завязываю.

Alex/AT
20.04.2006, 12:18
Набор команд однозначно определяется целевым процессором.

"Функции по макросам", вероятно, умеет любой вменяемый МАКРОАССЕМБЛЕР.
Спектрумовские, за исключением ALASM, такой возможностью не обладают.
Да и ALASM не особо... Вменяемый макропроцессор в моём понимании, если что,
это m4.

Что такое "короткие записи" я не знаю.
Уточняю - набор директив.

А STRUCT макропроцессоры все умеют? Или надо искать препроцессор, который бы это мог? А сохранять в SNA, например? Или надо еще и линкер искать для ZX? А ECHO по ходу компиляции, чтобы листинг не читать, а сразу видеть размеры/точки/etc.? А MODULE и записи вида <module>.<label>? А INSERT (INCBIN)?

А "короткая запись" - это типа PUSH HL,DE,BC,AF... Крайне полезная фича :)

В общем, для кроссассемблинга на ZX мой выбор - SJAsm+. Удобнее пока не встречал. А на самом ZX нравятся ALASM и ZXASM (ZASM), но использовать их в Unreal по уже описанной причине - грабли, а реала, увы, :( нет.

Rubts0FF
21.04.2006, 01:44
Ну я думаю мне оно позволительно, ибо писал я на асмах много.. нет, не много, дохрена ;)
И в конце концов пришёл именно к nasm (если писать на пэцэ).

зы. оффтоп всё это. я завязываю.
То это не дает тебе права голословно заявлять что masm - это неассемблер. Каждому своё, мне FASM нравиться, но я же не лаю masm.
Я тоже завязываю.

Kurles
21.04.2006, 23:18
А можешь поподробнее объяснить, как этого добиться, или хотя бы где почитать?Легко. Собственно в начале sjasm'овсокго исходника пишем

labelslist "путь_к_унрилу\user.l"

после чего компилируем прогу, запускаем унрил, в его дебагере жмём ctrl-l и радуемся :)

captain cobalt
22.04.2006, 14:51
MODULE и записи вида <module>.<label> Это наиболее мощная вещь!
В каких ассемблерах это есть?

Alex/AT
22.04.2006, 14:54
В каких ассемблерах это есть?
Пока что SJAsm Plus только.

Robus
22.04.2006, 15:45
В каких ассемблерах это есть?
Пока что SJAsm Plus только.



Далеко не только в этом асме ... В моём ASAM'е такое было с самого начала, ещё в 2001 ...

nyuk
24.04.2006, 08:55
Легко. Собственно в начале sjasm'овсокго исходника пишем
labelslist "путь_к_унрилу\user.l"
после чего компилируем прогу, запускаем унрил, в его дебагере жмём ctrl-l и радуемся
Спасибо. Я правда уже сам разобрался :) Но все равно спасибо и респектище.
Вещь архиполезная!

fk0
24.04.2006, 10:45
Уточняю - набор директив.

А STRUCT макропроцессоры все умеют? Или надо искать препроцессор, который бы это



Этот макропроцессор называется C. Если нужны namespaces, шаблоны и прочие извращения -- C++. И к этим двум макропроцессорам сверу прикручиваются ещё
более мощные, если надо, вроде scheme.



мог? А сохранять в SNA, например?


А сохранять в $Z? А в $X? А в $N? А в *.fjh? А в текст программы начитанный в wav-файл на русском языке в кодировке iso-8859-5?



Или надо еще и линкер искать для ZX?


Для ZX -- не надо. Даже для Z80 не нужно. Достаточно для выбранного компилятора.



А ECHO по ходу компиляции, чтобы листинг не читать, а сразу видеть размеры/точки/etc.?


Я даже не знаю это как. Но в том, что в приличной программе ничего не помещается в 24 строчки стандартного терминала -- уверен. Листинг нужен в любом случае и он удобнее. Нужно в процессе: cat | tail |grep | awk | less...



А MODULE и записи вида <module>.<label>?


Это называется namespace и поддерживается макропроцессором C++.



А INSERT (INCBIN)?


А нефиг.



А "короткая запись" - это типа PUSH HL,DE,BC,AF... Крайне полезная фича :)


Это реализуется рекурсивным макросом.

Alexander Bondarenko (500:3432/3)
25.04.2006, 12:35
*Здравствуй, Alexey!*

Лови мои идеи по поводу сабжа "Асмы и удобство разработки", о котором трещала в 20 Apr 2006 твоя портянка к тов. All.


Sjasm+. По синтаксису - почти аласм, есть возможность работать со
спековскими форматами файлов (.trd, hobeta), можно из кода снапшот
делать, плюс ко всему приятная фича - можно выгрузить метки на диск в
файл, формат которого понимает Unreal, что бы он их во встроеном
дебагере показывал. По поводу редактора - прикручивал к MuitiEdit'у
поддержку Sjasm'а - более чем приятно. Можно было по меткам в тексте
скакать, и на ошибки при ассемблировании позиционировать курсор.
Полноценное IDE получилось.

Можно поинтеpесоваться, какой веpсии MultiEdit, и где его можно скачать?

/Вот и всё, Alexey, можешь листать дальше.../

... Достоинства выставляют с целью скрыть недостатки.

Alexander Bondarenko (500:3432/3)
25.04.2006, 16:35
*Здравствуй, Alexey!*

Лови мои идеи по поводу сабжа "Асмы и удобство разработки", о котором трещала в 20 Apr 2006 твоя портянка к тов. All.


Sjasm+. По синтаксису - почти аласм, есть возможность работать со
спековскими форматами файлов (.trd, hobeta), можно из кода снапшот
делать, плюс ко всему приятная фича - можно выгрузить метки на диск в
файл, формат которого понимает Unreal, что бы он их во встроеном
дебагере показывал. По поводу редактора - прикручивал к MuitiEdit'у
поддержку Sjasm'а - более чем приятно. Можно было по меткам в тексте
скакать, и на ошибки при ассемблировании позиционировать курсор.
Полноценное IDE получилось.

Можно поинтеpесоваться, какой веpсии MultiEdit, и где его можно скачать?

/Вот и всё, Alexey, можешь листать дальше.../

... Достоинства выставляют с целью скрыть недостатки.

Alex/AT
25.04.2006, 20:08
C++, C++ . Товарищ, вы бредите. Мы про асмы, а не про C++.

demon_zx
26.04.2006, 09:25
Кста, кого-нибудь интересует удобная среда разработки под sjasm и asm80win (от Медноногова)?

boo_boo
26.04.2006, 12:24
Кста, кого-нибудь интересует удобная среда разработки под sjasm и asm80win (от Медноногова)? а в чем ее отличие от связки текстовый редактор + асм + эмуль с дебаггером?
...вообще, если под линухом пашет, то интересует :rolleyes:

Знахарь
26.04.2006, 18:12
А если стоко всего надо так чего не пользовать zEmu асм Кладова ?
Там и struct и define и макросы интересные, и много-много всего... И дебуггер сразу и редактор..

jim
27.05.2006, 00:24
Кста, кого-нибудь интересует удобная среда разработки под sjasm и asm80win (от Медноногова)?
меня интересует..

Bally
02.09.2006, 16:17
Господа - помогите советом ламеру - не могу загрузить GENS4 под EmuZWin 2.5v, загружаю так, как описанов книге "Как написать игру на ассемблере для ZX Spectrum". Вместо того чтобы один раз загрузиться, он грузиться все время, как бы в цикле.

bugsy
02.09.2006, 18:07
брось ты этот генс. возьми аласм. если чо не поймёшь - спросишь.

moroz1999
02.09.2006, 19:24
лично мой совет - sjasm + нормальный блокнот наподобие scite. мою продуктивность повысило раз в 5 по сравнению с zasm.

elfh
02.09.2006, 23:12
лично мой совет - sjasm + нормальный блокнот наподобие scite. мою продуктивность повысило раз в 5 по сравнению с zasm.

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

moroz1999
03.09.2006, 12:41
да как-то особо никак. пользуюсь анрилом, он на моей машинке грузится почти моментально.
экономлю время в основном засчет удобства редактирования и автоматизирования - батник собирает trd с автобутом, анрил настроен так, чтобы сразу стартовать trdos - минимум нажатий клавиш.

bugsy
04.09.2006, 00:56
ДОРОГИЕ СОФОРУМЧАНЕ!!! РЕШЕНИЕ ВСЕХ ПРОБЛЕМ НАЙДЕНО!!!
внимайте моей статье о том как прикрутить SJAsm к MultiEdit`у (http://zx.pk.ru/showthread.php?t=3703)!!!

Lethargeek
05.09.2006, 07:50
Имхо кросс-ассемблеры - хорошо, но тем не менее все это полумеры. Вся эта "выгрузка в SNA" для отладки - лишние телодвижения. Нужна полноценная среда разработки, главный инструмент которой - ассемблер-ИНТЕРПРЕТАТОР (как бы дико это не звучало), то есть возможность эмулировать выполнение сразу ТЕКСТА отлаживаемой программы. Причем на этапе разработки пока необязательно привязанного к железу, то есть метки - это именно имена, а не адреса (если кодер явно не указал на привязку к физическим адресам), и объем кода/данных может быть любой. Работающий процесс можно будет в любой момент остановить, поменять значения в "регистрах", отредактировать несколько строк или даже вставить новый include и продолжить выполнение с того же самого (или любого другого) места. И уже когда все более-менее работает без логических багов, можно собирать "реальную" версию.

Тут основная сложность - хранение адресов в регистрах, когда возможны всякие сложения адресов со смещениями (размерами таблиц) и т.п. Да еще и к меткам могут быть дополнительные требования типа выравнивания.

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

moroz1999
05.09.2006, 12:26
да надо ли? кто это будет осваивать и писать? все кому хочется что-то делать, делают на том, что есть, и вряд ли будут менять привычный инструментарий. все остальные только болтают. или я не прав?

psndcj
05.09.2006, 12:36
прав, грамотно объяснил!

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

Lethargeek
06.09.2006, 07:31
да надо ли? кто это будет осваивать и писать? все кому хочется что-то делать, делают на том, что есть, и вряд ли будут менять привычный инструментарий.
Тады вся тема к чему? Если даже "осваивать" неохота...


все остальные только болтают. или я не прав?
Ну мож у кого руки чешутся написать самую-самую среду разработки... :)
А самому делать все, что хочется, жизни не хватит.

CHRV
06.09.2006, 11:21
Ну мож у кого руки чешутся написать самую-самую среду разработки... :)
Посмотрите как в Unreal сделано, этот инструмент запросто можно развивать, токо кто этим будет заниматсья :)

moroz1999
06.09.2006, 11:46
Тады вся тема к чему? Если даже "осваивать" неохота...
я уже с zxasm успешно слез, нарадоваться не могу :)