Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Общие вопросы по программированию, компьютерный форум
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 03.04.2010, 08:58   #31
svbezm
Форумчанин
 
Регистрация: 02.04.2010
Сообщений: 104
По умолчанию

Вот пара примеров для FASM.
Но это только идея языков программирования, без дополнительных парсеров, трансляторов и прочего...
Вложения
Тип файла: zip cmacro.zip (1.3 Кб, 11 просмотров)
Тип файла: zip qbasic.zip (2.4 Кб, 11 просмотров)
svbezm вне форума Ответить с цитированием
Старый 03.04.2010, 13:42   #32
Indian
Форумчанин
 
Регистрация: 23.02.2010
Сообщений: 107
По умолчанию

Цитата:
Сообщение от svbezm Посмотреть сообщение
Вот пара примеров для FASM.
Но это только идея языков программирования, без дополнительных парсеров, трансляторов и прочего...
Добавлю, что телом макросов можно сделать переходы, а не код.
При конструкциях вида:
PRINT 1
PRINT 2
PRINT 3
PRINT 4
PRINT 5
Исполнимый файл излишне раздувается.

Последний раз редактировалось Indian; 03.04.2010 в 15:32.
Indian вне форума Ответить с цитированием
Старый 03.04.2010, 17:21   #33
svbezm
Форумчанин
 
Регистрация: 02.04.2010
Сообщений: 104
По умолчанию

Я привел лишь идею построения синтаксиса
языков программирования при помощи макросов и всего...
А задачи построения оптимального языка кодирования я и не предлагал.
Насчет переходов стартовый переход есть во всех типах файлов от
MZ до РЕ , только он не ставится в исходнике а скрыт в компиляторе.
И не один бесконечный цикл не обходится без них.
А печать по одному символу, ну напиши макрос на печать с форматированием...
Язвить и критиковать и я умею...
svbezm вне форума Ответить с цитированием
Старый 03.04.2010, 21:31   #34
Indian
Форумчанин
 
Регистрация: 23.02.2010
Сообщений: 107
По умолчанию

Цитата:
Я привел лишь идею построения синтаксиса
языков программирования при помощи макросов и всего...
А задачи построения оптимального языка кодирования я и не предлагал.
Я так и подумал.

Цитата:
Язвить и критиковать и я умею...
Вы меня неправильно поняли. Но, возможно, я неправильно выразился.
Я не язвил и не критиковал вовсе.

А привел дополнение к использованию самих макросов FASM'а, тем самым приведя их недостаток, хотя, отчасти, и преимущество.
Хотя бы на тот случай, если вы или кто-нибудь другой всерьез ими займется.

Препроцессор на месте вызова макроса вставляет всё его тело.

Конструкция:
PRINT ab
PRINT abc
PRINT abcd
PRINT abcde
PRINT ghjk
Транслируется в одни и те же инструкции 5 раз подряд(я не про ваш код), неоправданно увеличивая размер исполнимого файла.
Тогда как можно сделать в теле макроса переход на метку с инструкциями вне его.
Это эмуляция процедур, с использованием возможностей макросов.
К тому же в FASM'е, под DOS и Linux, директива proc, насколько я знаю, отсутствует.
Есть неофициальная версия для DOS:
http://board.flatassembler.net/topic.php?p=40011#40011
Вопрос в том как указать глобальный переход на метку внутри макроса(т.е. возврат), с учетом того, что его вызовов может быть несколько.
Реализацию этого, по моему мнению, можно найти в proc16.inc(см. ссылку)/proc32.inc, ведь сам proc является макросом.
Возможно, это позволило бы использовать замену процедур, без привязки к архитектуре.
Indian вне форума Ответить с цитированием
Старый 04.04.2010, 09:33   #35
svbezm
Форумчанин
 
Регистрация: 02.04.2010
Сообщений: 104
По умолчанию

Можно использовать при помощи макросов любой вариант соглашений о вызовах в том числе и процедурный и сишный и паскалевский .Я привел этот вариант из соображений оптимизации не длины программного кода, а скорости их выполнения.Этим приемом пользуется большинство SCADA систем и графических языков прогаммирования.Они препочитают линейную структуру программ , без большого количества обращений к стеку и многочисленных условных переходов.Причина проста: Памяти у современных компьютеров предостаточно, а большинство задач требует увеличения скорости исполнения алгоритма.Поэтому оптимизация производится с целью уменьшения времени исполнения.
Но вообще говоря , это мой подход в силу специфики решаемых задач. Вы же можете построить для своего использования макросы процедурного типа или обьектно-ориентированного...
svbezm вне форума Ответить с цитированием
Старый 04.04.2010, 17:34   #36
Marsel737
Форумчанин
 
Аватар для Marsel737
 
Регистрация: 09.11.2009
Сообщений: 669
Радость

Цитата:
Сообщение от Air Посмотреть сообщение
Gnumko
Да и вот, что можно ещё такие команды как "begin...end" - "{...}"
"Function" и т.д. установить на "горячие" клавиши.
ну вроде как нажал CTRL+F и в редакторе появился пустой код функции с программными скобками.
CTRL+P - процедура ....
Так в делфи это уже реализовано, к примеру нужно только объявить процедуру

Код:
procedure MyProc;
после чего нажать на Ctrl+C и у вас появится конструкция

Код:
procedure TForm1.MyProc;
begin

end;
А в более поздних версиях делфи, к примеру у меня d10 достаточно набрать if, как тут же появится конструкция if True then, если while, то while True do и т.д.
Я не всегда знаю, о чем говорю, но знаю, что прав. © Мухаммед Али.
К чёрту обстоятельства. Я создаю возможности. © Брюс Ли
Marsel737 вне форума Ответить с цитированием
Старый 05.04.2010, 06:46   #37
svbezm
Форумчанин
 
Регистрация: 02.04.2010
Сообщений: 104
По умолчанию

С уважением отношусь к продуктам BOLAND и Mikrosoft,
но попробуйте написать элементарную программу вывода прямоугольных импульсов частотой килогерц 100..200 непрерывно в обычный LPT port c выходом из программы не по сбросу или выключению питания,а по любой клавише клавиатуры...
Вы поймете какой реально нужен язык программирования и операционная система...
svbezm вне форума Ответить с цитированием
Старый 05.04.2010, 09:16   #38
Utkin
Старожил
 
Аватар для Utkin
 
Регистрация: 04.02.2009
Сообщений: 17,351
По умолчанию

Qnx? Ваше сообщение слишком короткое. Оно должно быть не менее 10 символов.
Маньяк-самоучка
Utkin появился в результате деления на нуль.
Осторожно! Альтернативная логика
Utkin вне форума Ответить с цитированием
Старый 05.04.2010, 10:18   #39
svbezm
Форумчанин
 
Регистрация: 02.04.2010
Сообщений: 104
По умолчанию

C чувством юмора в порядке !!! Но QNX в лучших чувствах даст килогерц 50 не более...
svbezm вне форума Ответить с цитированием
Старый 05.04.2010, 10:59   #40
crazy horse
ios developer
Старожил
 
Аватар для crazy horse
 
Регистрация: 16.11.2007
Сообщений: 2,885
По умолчанию

2Alar
Цитата:
&& - но вот такое трудно пережить в си
Чем?
2Gnumko
Я бы порекомендовал начать с изучения русского языка.
Делайте что хотите, но чтобы через полчаса в лесу было светло, сухо и медведь!
crazy horse вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Есть такой язык программирования Autolisp Эdvard Помощь студентам 6 25.04.2008 16:28
Язык программирования Turbo Pascal AnKS Помощь студентам 2 28.10.2007 07:22
Новый язык программирования: AWL G_D_G Свободное общение 0 27.02.2007 14:10