|
0 / 0 / 0
Регистрация: 22.02.2016
Сообщений: 27
|
|
Можно ли FASM сделать высокоуровневым?12.07.2017, 11:19. Показов 5156. Ответов 25
Метки нет (Все метки)
Приветствую всех.
Вопрос к специалистам: можно ли с Вашей позиции FASM, с учетом наличия в нем макросов, превратить в язык высокого уровня? И если нет, то чего в нем не хватает, что нужно доработать, чтобы выполнить эту задачу? Заранее благодарю за ответы. Сам, к сожалению, на ассемблере никогда практически не программировал, так что опыта не имею. Почему-то мы его не изучали, да и на практике особо не приходилось сталкиваться, но это скорее потому, что я никогда не работал по профессии программиста, все больше делал какие-то мелочи для себя да друзей. Именно поэтому и имеется потребность обратиться к более опытным коллегам.
0
|
|
| 12.07.2017, 11:19 | |
|
Ответы с готовыми решениями:
25
Что есть "макрос"? (разделение темы "Можно ли FASM сделать высокоуровневым?") Сделать приведенную программу резидентной (FASM) Вызываю dll (написанную на vc++2008) из Fasm. Через 40 секунд вылет из программы.Без вызова dll из Fasm программа не вылетает. |
|
Asm/C++/Delphi/Py/PHP/VBA
|
|
| 12.07.2017, 16:10 | |
|
flamehowk, зачем FASM делать высокоуровневым?
Теоретически всё можно, только нужно будет написать почти компилятор (парсер с преобразованием в код на ассемблере) на языке макросов fasm (или fasmg). А это задача для истинного мастера извращений ![]() Вроде как есть какие-то реализации "высокоуровневых ассемблеров", но я с ними не знаком, не знаю как выглядит код на них и как они работают...
2
|
|
|
0 / 0 / 0
Регистрация: 22.02.2016
Сообщений: 27
|
|
| 12.07.2017, 16:18 [ТС] | |
|
Jin X, ничего, уж до чего раньше извратились, до того мы никакими извращениями не докатимся. Благодарю за ответ.
0
|
|
|
Asm/C++/Delphi/Py/PHP/VBA
|
|
| 12.07.2017, 16:58 | |
|
Я к тому, что проще (и безглючнее) написать новый язык программирования, чем допиливать FASM до ЯВУ (языка высокого уровня). Это всё равно, что из мотоцикла делать яхту или из холодильника – телевизор
. Проще уж с нуля. Иначе это будут как раз те самые "костыли", от которых вы так хотите избавиться
1
|
|
|
0 / 0 / 0
Регистрация: 22.02.2016
Сообщений: 27
|
|
| 12.07.2017, 22:37 [ТС] | |
|
Jin X, я Вашу мысль понял и по сути оно так и должно быть, но ведь нужно с чего-то начинать? Писать в машинных кодах с самого нуля - это, конечно, отлично, но я надеялся, что можно будет начать хотя бы с асма, ведь, по идее, он должен быть максимально приближен к машинному коду.
Собственно из-за того, что я прекрасно понимаю как писать в машинных кодах, так как сам разрабатываю архитектуры устройств и логику обработки сигналов под них, но при этом никогда не работал с ассемблерами, у меня имеется явный пробел в понимании того - чего они стоят. Потому и спрашиваю у специалистов, чтобы понять - в какую сторону начинать движение наиболее оптимально. Если Вам не трудно, могли бы Вы немного расширить свою мысль и аргументировать - почему лучше в основу ассемблер не ложить? Буду весьма признателен.
0
|
|
|
Asm/C++/Delphi/Py/PHP/VBA
|
|||||||
| 13.07.2017, 00:31 | |||||||
|
Можно сделать компилятор, который будет по факту являться парсером исходного кода и переводить его в fasm-код. Т.е. в исходнике, скажем, a=b+c, а этот "компилер" будет генерировать, грубо говоря:
Просто писать парсер кода через макросы fasm'а - это изврат. К тому же, не получится реализовать гибкий синтаксис. Т.е. тот же a=b+c уже не написать, т.к. надо вызвать макрос, который будет парсить a=b+c. Например, do a=b+c. Ну и много других подводных камней будет, не говоря уже об ограниченности макропроцессора fasm'а.
1
|
|||||||
|
0 / 0 / 0
Регистрация: 22.02.2016
Сообщений: 27
|
|
| 13.07.2017, 01:07 [ТС] | |
|
То есть Вы таки предлагаете все делать с нуля и сразу в машинный код... Но ведь мы все-равно будем ограничены архитектурой и ее возможностями, если будем ориентироваться на современные машины. Новая архитектура - отдельная тема и там еще много работы, я уже не говорю о ее реальной реализации. То есть а=в-с все равно никак не получится, придется с=~с; а=в+с; ну и тому подобное. Отсюда как ни крути вырастут макро-сборки кодов, по сути - функции, мало чем отличающиеся от асм. То есть, по сути, получается, что Вы предлагаете заново разработать Ассемблер!? но уже по некой иной, заранее сформированной ТЗ схеме... я верно Вас понял? А потом над ним сделать высокоуровневую надстройку в виде второго этажа ЯП. Так?
0
|
|
|
Asm/C++/Delphi/Py/PHP/VBA
|
||||
| 13.07.2017, 18:40 | ||||
|
Ассемблер для каждой архитектуры свой. И модули будут свои (для разных ОС). А сразу это должно переводиться в машинный код или сначала в какой-то псевдо-код, я не знаю. Читайте про устройство компиляторов... p.s. И я не понимаю, почему нужно разрабатывать ассемблер? Ассемблер – низкоуровневый язык. Вам же нужен высокоуровневый... с возможностью вставки асм-кода, например.
0
|
||||
|
0 / 0 / 0
Регистрация: 22.02.2016
Сообщений: 27
|
||
| 13.07.2017, 20:10 [ТС] | ||
|
В любом случае - благодарю за участие.
0
|
||
|
3410 / 1829 / 489
Регистрация: 28.02.2015
Сообщений: 3,696
|
|
| 15.07.2017, 17:45 | |
|
Jin X, flamehowk, синтаксис языка и конечного ЯВУ, будет зависеть, только от текущих возможностей макросов ассемблера.
0
|
|
| 17.07.2017, 00:40 | |
|
Не по теме: Прочитал тему по диагонали...%-)
0
|
|
|
6773 / 2741 / 385
Регистрация: 17.02.2013
Сообщений: 4,048
|
|||
| 30.07.2017, 04:39 | |||
|
Голую самодельную архитектуру, для которой ничего нет, обуть транслятором ЯВУ ? Транслятор ЯВУ часто создается путем написания на ассемблере, но никогда путем расширения ассемблера. Язык, расширяя который можно создать другой язык, называется мета-языком. Но ассемблер не есть мета-язык. К нему можно создать хоть вагон макросов-шмакросов, но он так и останется ассемблером. Мета-языком является, например, Форт. Сам процесс написания программ на Форте является процессом расширения языка. Потому-что Форт не может различить то, что было на нем написано после от того, что существовало в нем с самого начала. Кроме того в Форте можно перекрыть все, что угодно. Хоть разбор входного потока, хоть интерпретатор. Они доступны общим порядком. В итоге Форт можно как угодно расширить, а можно и вообще путем перекрытия превратить в абсолютно другой язык, с совершенно иным синтаксисом и идеологией. Это два разных подхода к созданию языка - написание транслятора одного языка на другом и расширение одного языка до другого. Совершенно разных. Для второго подхода даже сам изначальный язык должен быть особым. Он должен быть мета. Но если нужно обуть голую архитектуру транслятором ЯВУ часто используют третий подход. Сначала на архитектуре у которой все есть пишут на языке А минимальный компилятор языка Б и компилируют. Минимальный настолько, лишь бы смог скомпилировать самого себя. Получают исполняемый файл. Потом переписывают тот-же компилятор на языке Б и получают исходник. Потом компилируют исходник исполняемым файлом. Когда это получается, то выходит, что был создан компилятор компиляторов, что компилирует самого себя. Потом изменяют в компиляторе компиляторов кодогенерацию под другую архитектуру и компилируют. Перекидывают исполняемый файл для новой архитектуры вместе с исходником на нее. И уже там начинают раскрутку. Последовательно дописывают исходник и компилируют предыдущей версией новую, до тех пор, пока не получат полновесный транслятор языка. Короче, это метод написания компилятора компиляторов, его кросс-компиляции на новую платформу и последующей раскрутки на ней. Добавлено через 6 минут Это вот если нужно расширить мысль глобальными идеями и аргументировать. Добавлено через 14 минут Макросы способны превратить один ассемблер в другой ассемблер. Это максимум. Но они не могут превратить ассемблер в другой язык.
0
|
|||
|
0 / 0 / 0
Регистрация: 22.02.2016
Сообщений: 27
|
|||
| 30.07.2017, 10:04 [ТС] | |||
|
А была еще и задача №1 - под уже имеющуюся РИСКовую архитектуру х86-64 на базе ДРАКОНа создать транслятор, используя в качестве ЯВУ модифицированный ДРАКОН. И стоял вопрос - как лучше это сделать, писать транслятор с нуля или просто пришить лапти ДРАКОНа к fasm-у. Чтобы сделать выбор мне нужно было понять возможности макросов fasm-а, позволят ли они широко махать руками и загребать под себя все, что физически возможно реализовать на данной архитектуре. В результате было принято решение не заморачиваться и все делать с нуля. На GTK+ будет писаться оболочка под ИСР, а на С++ и ASM напишем транслятор, который будет прямо из блок-схем генерировать машинный код. Проект называется "ВАЯТЕЛЬ". Сейчас потихоньку разрабатываем идеологию, проектируем методы и всяко-разно одеваем ДРАКОНа в новую шкуру. Вот, собственно, и все дела.
0
|
|||
|
0 / 0 / 0
Регистрация: 22.02.2016
Сообщений: 27
|
|
| 01.08.2017, 08:23 [ТС] | |
|
Я отвечал Constantin Cat-у...
0
|
|
|
3410 / 1829 / 489
Регистрация: 28.02.2015
Сообщений: 3,696
|
||||||||
| 01.08.2017, 10:46 | ||||||||
|
Вы спросили:
Спрашивается: на кой мне такой ЯВУ-ассемблер?
0
|
||||||||
|
Модератор
|
|
| 01.08.2017, 13:06 | |
|
Не по теме: Т.к. уже существуют несколько реализаций ДРАКОНа (согласно Wikipedia), полагаю, что в данном случае имеем дело с дипломной работой (или огромным количеством свободного времени). Мнение - потому, что на разработку IDE, транслятора требуется много человеко-лет. 1. Возможно, что решение имеет смысл искать после рассмотрения структур аналогичных проектов. Первое, что приходит на память - несколько проектов компилятора FBD (графический язык, подобный составлению электрической схемы из микросхем) для микроконтроллеров AVR и PIC. Там FBD транслировался в C, а потом avr-gcc превращал это в файл прошивки. Как понимаю, это было попыткой избежать проблемы макросов за счёт оптимизатора gcc (ну и плюс не нужно самостоятельно следить за развитием семейства процессоров). Ну и существующие разработки ДРАКОНа не стоит забывать. 2. Сейчас существует оптимизационная прослойка для C (и нескольких других языков), позволяющая дополнительно оптимизировать код - LLVM. Ссылки на FBD for AVR Графический язык ДРАКОН для программирования микроконтроллеров http://flprog.ru/ http://flprogwiki.ru/wiki/inde... зделы_Wiki http://horizontautomatics.ru/ - FBD --> assembler http://cq.cx/ladder-ru.html Считаю, что в данной теме добавить нечего. На конкретный вопрос ТС получил ответ - макросы FASM не дадут оптимального решения для трансляции с ДРАКОНа, хотя вполне можно использовать для получения хоть какого-нибудь результата.
0
|
|
|
0 / 0 / 0
Регистрация: 22.02.2016
Сообщений: 27
|
||||
| 01.08.2017, 21:28 [ТС] | ||||
|
В любом случае, я уже отписался сверху, что вопрос решен в пользу создания нового Визуального ЯШУ (Язык Широкого Уровня) с широким спектром средств программирования от машинного кода и до максимального уровня масштабирования. За основу будут браться команды процессора и из них все будем лепить.
0
|
||||
|
6773 / 2741 / 385
Регистрация: 17.02.2013
Сообщений: 4,048
|
||
| 06.08.2017, 04:03 | ||
|
Разобрался, кое что почитав, откуда взялось "макроподстановка = подпрограмма".
А вот если http://drakon.su/_media/biblio... iption.pdf а там смотрим страницу 59 и читаем Икона "Вставка" - это команда "Передай управление в процедуру". ЧТО ТАКОЕ ПОДСТАНОВКА ? Операция "подстановка" связана с использованием иконы-вставки. Вот все в голове и замкнулось. Подстановка=макроподстановка стала передачей управления в процедуру=подпрограмму. З.Ы. Книга написана бывшим начальником над программистами при разработке Бурана. Не программистом. А язык Дракон был разработан и использовался для записи тех.заданий для программистов. Точнее алгоритмов самого верхнего уровня для разрабатываемого устройства. А детализация нижнего уровня оставлялась исполнителям. Позже (с 2010 кажется) автор Дракона зачем-то начал пиарить его как универсальный язык и новое слово в программировании. Думаю, уже старческий маразм пошел. Можно извинить. Добавлено через 4 минуты З.З.Ы. Дракон, видимо, привлекателен для тех, кто так и не осилил научиться программировать. Ибо там все ясно понятно. Можно ли из него сделать какую-нибудь конфетку - вопрос. Но сильно вряд ли. Уж очень нишевое средство, хотя в своей нише может быть и красивое.
0
|
||
| 06.08.2017, 04:03 | |
|
Помогаю со студенческими работами здесь
20
Fasm 1.69.39 что нового. И как сделать макрос без запятых типа IF eax => 10 можно сделать данную программу проще?как можно примитивней можно сделать так чтоб можно было использовать ifstream? Можно ли сделать ,что бы запрос можно было запустить через кнопку на Форме? Можно ли на планшете вместо 8ки поставить 7ку? Как это можно сделать? Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
||||
|
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта
Симптом:
После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
|
Access
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
|
Новый ноутбук
volvo 07.12.2025
Всем привет.
По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне:
Ryzen 5 7533HS
64 Gb DDR5
1Tb NVMe
16" Full HD Display
Win11 Pro
|
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
|
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
|
|
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов
На странице:
https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/
нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
|
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов.
. . .
|
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
|
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
|
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут.
В век Веб все очень привыкли к дизайну Single-Page-Application .
Быстренько разберем подход "на фреймах".
Мы делаем одну. . .
|