Форум программистов, компьютерный форум, киберфорум
Наши страницы

FASM

Войти
Регистрация
Восстановить пароль
 
mkostoevr
Незнайка
24 / 9 / 1
Регистрация: 14.10.2016
Сообщений: 358
Записей в блоге: 2
#1

Какая архитектура у Ваших проектов? - FASM

30.07.2017, 10:17. Просмотров 405. Ответов 11
Метки нет (Все метки)

Здравия всем!

В общем, дело такое. При создании программы я разделяю её на модули.

Прогаю на FASM'е, поэтому не придумал ничего лучше, чем инклудить файлы по змейке, чтобы не получалось так, что один файл инклудится несколько раз, и не получалось множественное определение переменных:

main_variables.inc --> data.inc --> updater.inc --> window_messages.inc --> main.asm

Создаю главный инклуд, в нём импортирую и определяю все нужные переменные и функции, его инклудю во второй файл-модуль, тот в третий, и так по змейке, до главного asm файла, в котором я моздаю само окно и прифигачиваю функции, которые я расписываю в .inc модулях.

А как делаете Вы?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
30.07.2017, 10:17
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Какая архитектура у Ваших проектов? (FASM):

Архитектура i8086 - Программирование
Во многих книгах по устройству микропроцессора объяснения начинаются с относительно современных процессоров, уже состоявшихся, обросших...

Архитектура компьютера - Assembler
Ребят, такая проблема: нужно защитить 2 лабы, решив 3 задачки, а не знаю как :( :( вот они: 1. Структура и работа центрального...

Архитектура процессора Pentium - Assembler
Доброго времени суток! Есть лабораторная работа с "Архитектуры компьютеров", но не могу вникнуть в задание, а точнее, не понимаю, что...

64-разрядная архитектура быстрее 32-разрядной? - Assembler
Ребят привет! Спросить хочу. Все охают и ахауют как здорово иметь 64 разрядную архитектуру процессора. Мне как-то преподаватель говорил,...

Парсер Яндекс.Маркет для ваших проектов php - PHP
Решил поделится собственным опытом разработки парсера яндекс маркета, в результате выполнения скрипта получаем краткое описание товара,...

Какая архитектура AMD A6-4400M? - Процессоры
интересует архитектура данного агрегата для установки debian

11
ФедосеевПавел
Модератор
2480 / 1383 / 574
Регистрация: 01.02.2015
Сообщений: 4,709
30.07.2017, 14:45 #2
В старой, ещё для DOS, книге
Нортон П., Соухэ Д. - Язык ассемблера для IBM PC
показан модульный принцип с использованием не include, а библиотек или их предтеч - объектных файлов.

Хоть на ассемблере ничего не делаю, но чувствую, что такой подход был бы более оптимальным - все переменные описываются один раз, всё описывается один раз. А в единственный include проекта можно разместить прототипы функций и переменных, чтобы в каждом последующем модуле не описывать все extern.
1
Constantin Cat
1000 / 677 / 224
Регистрация: 28.02.2015
Сообщений: 1,768
Завершенные тесты: 1
30.07.2017, 15:20 #3
В больших проектах каждому инклуду ставится свой уникальный equ, если он уже определен, то данный инклуд игнорируется. Реализуется с помощью макросов условного программирования.
1
Jin X
Евгений, Самара
1267 / 521 / 109
Регистрация: 14.12.2014
Сообщений: 1,430
Завершенные тесты: 2
31.07.2017, 21:59 #4
В fasm такое не прокатит, т.к. все include обрабатываются до if'ов. К сожалению, условного включения файла в fasm реализовать невозможно, как я понял... сам сталкивался с таким косяком, даже на их форум писал

Добавлено через 5 минут
https://board.flatassembler.net/topic.php?p=195698

Добавлено через 8 минут
А чем не устраивает включение всех include'ов в main.asm ?
1
mkostoevr
Незнайка
24 / 9 / 1
Регистрация: 14.10.2016
Сообщений: 358
Записей в блоге: 2
31.07.2017, 22:03  [ТС] #5
Jin X, тем, что функции из нескольких инклудов и сам файл используют одни и те же переменные.

Добавлено через 1 минуту
Можно их, конечно, и как аргументы передавать, но при помощи такой "инклудовки" немного проще, ибо переменных не мало.
0
Jin X
Евгений, Самара
1267 / 521 / 109
Регистрация: 14.12.2014
Сообщений: 1,430
Завершенные тесты: 2
31.07.2017, 22:19 #6
Иии?
Может, я не совсем понял суть проблемы, но в fasm вполне можно делать так...

main.asm:
Assembler
1
2
3
4
5
mov eax,VALUE
mov edx,MyLabel
call MyProc
 
include 'my.inc'
my.inc:
Assembler
1
2
3
4
5
6
7
8
VALUE = 5
 
MyLabel:
 
proc MyProc
  int3
  ret
endp
Добавлено через 2 минуты
main.asm вместе с include 'win32ax.inc', естественно (для proc/endp)...

Добавлено через 5 минут
И, соответственно, так тоже:

main.asm:
Assembler
1
2
3
4
5
6
7
8
9
10
11
include 'win32ax.inc'
 
Start:
  mov eax,VALUE
  mov edx,MyLabel
  call MyProc
 
include 'my.inc'
include 'his.inc'
 
Finish:
my.inc:
Assembler
1
2
3
4
5
6
7
8
9
VALUE = 5
 
MyLabel:
 
proc MyProc
  mov eax,MyVALUE
  mov edx,SECOND_VALUE
  ret
endp
his.asm:
Assembler
1
2
MyVALUE = VALUE + 5
SECOND_VALUE = Finish - Start
1
mkostoevr
Незнайка
24 / 9 / 1
Регистрация: 14.10.2016
Сообщений: 358
Записей в блоге: 2
01.08.2017, 00:17  [ТС] #7
Jin X, и почему я до этого не додумался... Совсем забыл, как директива include оаботает! Спасибо!
0
Jin X
Евгений, Самара
1267 / 521 / 109
Регистрация: 14.12.2014
Сообщений: 1,430
Завершенные тесты: 2
01.08.2017, 11:26 #8
На том форуме, кстати, ответ дали как можно реализовать include по условию
0
Полный 30h
Эксперт быдлокодинга
1529 / 441 / 60
Регистрация: 04.11.2010
Сообщений: 1,221
07.08.2017, 22:15 #9
В include обычно подпрограммы пихаю. Что бы глаза не мозолили. Один хрен, если вызова какой то подпрограммы нет, то FASM её в код не добавляет при компиляции. Ну и секцию данных иногда, если переменных много. Чисто что бы скролл не дрючить.
0
Jin X
Евгений, Самара
1267 / 521 / 109
Регистрация: 14.12.2014
Сообщений: 1,430
Завершенные тесты: 2
08.08.2017, 08:04 #10
Цитата Сообщение от Полный 30h Посмотреть сообщение
Один хрен, если вызова какой то подпрограммы нет, то FASM её в код не добавляет при компиляции.
Важно сказать, что не добавит, только если процедура оформлена через proc / endp.
Иначе нужно писать:
Assembler
1
2
3
4
5
if used MyProc
  MyProc:
     . . .
     ret
end if
1
Полный 30h
Эксперт быдлокодинга
1529 / 441 / 60
Регистрация: 04.11.2010
Сообщений: 1,221
08.08.2017, 10:51 #11
Цитата Сообщение от Jin X Посмотреть сообщение
Важно сказать, что не добавит, только если процедура оформлена через proc / endp.
Как начинающий, к коим я себя отношу, могу сказать, что по другому я подпрограммы оформлять и не пытался. Чисто теоретически я в курсе, что можно оформить ПП как код начинающийся с обычной метки, а в конце подравнять стек и ещё чего то там. Но поскольку практического смысла в этом "изврате" я не увидел, то всегда придерживаюсь (и другим начинающим рекомендую) стандартного оформления. Дабы избежать непредвиденных граблей созданных совершенно на ровном месте по поводу перекоса стека и прочих не очевидных "радостей".
0
selger
1 / 1 / 0
Регистрация: 26.10.2017
Сообщений: 2
26.10.2017, 23:03 #12
Я про директиву include давно забыл как страшный сон.
Свои FASM-проекты организую по совершенно другим принципам, с помощью своего сборщика-компилятора (там встроен компилятор вычлененый и выдернутый из исходников fasm ).
Проект раскидан по десяткам и сотням файлов, во множестве папок, структура которых постоянно меняется в процессе разработки, особенно на начальном этапе. Могу за 5 минут всё поперетусовать и попереименовать и никакого гемора с директивами include. Надо лишь представлять последовательность поиска файлов, и учитывать это при их размещении и именовании (иногда приходится циферьками в начале имени задавать нужную последовательность).
Короче, можете всё это посмотреть во вложении, и если понравится - освоить.
1
Вложения
Тип файла: zip GS Assembler и примеры.zip (267.0 Кб, 3 просмотров)
26.10.2017, 23:03
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
26.10.2017, 23:03
Привет! Вот еще темы с ответами:

НЕ понимаю какая у меня архитектура ИС - 1С
всем привет. создала конфигурацию в 1с.8.2 . Не догоняю один момент. К какой архитектуре относится моя система теперь. Она у меня для...

Какая должна быть архитектура для данного Java EE проекта? - Java EE
Добрый день! Решил вот поизучать JavaEE. Дабы полнее погрузиться в процесс разработки придумал такую задачу. Итак, есть некий...

Tomcat или другие application server - какая архитектура приложения будет правильной? - Java EE
Добрый день. Начинаю погружаться в мир J2EE, до этого писал только на чистой Яве. К примеру, стоит задача написать довольно тяжелую...

В указанном dsn архитектура драйвера и архитектура приложения не соответствуют друг другу - C++ Builder БД
Добрый день. При запуске программы выскакивает вот такая вот ошибка. В чем может быть проблема и как ее исправить?


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
12
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru