|
83 / 1 / 0
Регистрация: 08.11.2017
Сообщений: 146
|
|
Какова трудоёмкость написания транслятора с Си на язык ассемблер?15.09.2020, 16:02. Показов 2185. Ответов 25
Метки нет (Все метки)
Задают вопрос. Какова трудоёмкость написания транслятора с языка Си на язык ассемблер? В человеко-днях.
Точнее даже, не полного языка Си, а его подмножества, с самыми важными особенностями. Транслятор должен переводить код написанный на этом подмножестве Си, в код на ассемблере, который , если скормить например, MASM - будет получен итоговый exe-файл, под ОС Windows. Известно, что всё что можно написать на C++, можно написать и на C, возможности ООП, реализуются просто - наследование просто реализуется дублированием кода, полиморфизм - ветвлением с кучей if (или switch-case), а инкапсуляция по части сокрытия кода - всего лишь удобства для программистов, если считать все поля как будто они с модификатором public, а те которые не public просто помечаем однострочным комментарием, который указывает программистам, что их нельзя спользовать за пределами класса. Инкапсуляция по части связи функций с полями объекта (структуры) - тоже реализуются, добавлением в общее множестве функций - первым параметром указатель на тип объекта, к которому эта функция должна относиться, а дальше все параметры следуют такими же , как было в коде C++. Т.е. многие возможности, в том числе и по части ООП - реализуются и на Си. Переписать код программы с C++ на C, вообще говоря, несложная задача задача. Да и все возможности C задействовать не требуется. Заметил, что многие мои программы и на C и на C++ используют только часть (подмножество) возможностей языка. И интересно, если нужно было бы транслировать в код программы на языке ассемблере, то какое время разработчику понадобилось бы ? Подмножество языка Си, которое нужно транслировать в язык ассемблера - 1) Символы латинского алфавита, цифры, специальные символы (пример /, <, > >> и т.д.) - позволяющие создавать свои функции (достаточно функционального программирования, а ООП - не нужно), вызывать функции WinAPI (пример ReadFile, SendMessage, WriteFile , создание и закрытие потоков , критические секции для синхронизации потоков, и т.д. Короче, вызывать полезные функции WinAPI ). Также возможность создавать переменные, указатели, массивы - [] , литералы, всевозможные операторы - логические , арифметические и т.д. 2) множество ключевых слов - идентификаторов нашего языка-подмножества Си (назовём его C- си-минус ) - sizeof - Получение размера объекта на этапе компиляции , typedef - Задание альтернативного имени типу , static - Объявление статической переменной, void - Маркер отсутствия значения; в указателях означает произвольные данные, bool, char, short, int, long - типы булевый и целочисленные,, signed, unsigned - знаковые и беззнаковы для целочисленных, float, double - числа с плавающей точкой, const - модификатор типа данных только для чтения, volatile - указание компилятору на возможность изменения значения переменной извне другим потоком, interlocked - для определения атомарности, для многопоточного программирования, struct - позволяет создать свои сложные типы, do, for, while, break, continue - для циклов, if, else - для проверки условий, switch, case, default - достаточно для выбора по целочисленному параметру, goto - для безусловного перехода, return - выход из функции, inline - Объявление встраиваемой функции , Всякие навороты типа "указателей на функции" и т.д. - не нужны. Как видим, транслятор должен понимать всего лишь 30 ключевых слов, нашего языка Си-минус, и все остальные символы указанные в 1-м пункте. Может кто знает, Сколько рабочих человеко-дней, понадобилось бы на написание подобного транслятора с листинга (кода) определенного выше подмножества языка Си (назвал Си-минус), в код на языке ассемблер ? Может ли это один человек сделать за один год?
0
|
|
| 15.09.2020, 16:02 | |
|
Ответы с готовыми решениями:
25
Написание транслятора с языка Паскаль на язык ассемблер (FASM) Какова примерно трудоёмкость задачи - написать свою собственную ORM? Какова последовательность написания программы для отбора корней |
|
83 / 1 / 0
Регистрация: 08.11.2017
Сообщений: 146
|
|
| 14.11.2020, 20:08 [ТС] | |
|
0
|
|
|
83 / 1 / 0
Регистрация: 08.11.2017
Сообщений: 146
|
||
| 14.11.2020, 20:24 [ТС] | ||
|
0
|
||
|
Модератор
|
|||
| 14.11.2020, 21:54 | |||
|
Не по теме:
Компилятор с С++ на Ассемблер Компилятор с языка PL/1 на язык Ассемблер Написание транслятора с языка Паскаль на язык ассемблер (FASM)
0
|
|||
| 15.11.2020, 00:07 | |
|
0
|
|
|
Модератор
|
||
| 15.11.2020, 19:46 | ||
|
https://github.com/rui314/chibicc Префиксные ++ и -- https://github.com/rui314/chib... 8d4f15f19f Компилятор генерирует файлы на входном языке ассемблера из GNU binutils (x86_64)
0
|
||
| 15.11.2020, 19:46 | |
|
Определить язык написания строки Компилятор с языка PL/1 на язык Ассемблер
Перевод из языка ассемблер в язык паскаль Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Из невошедшего на форум (диалог с ИИ-гугла)
zorxor 29.07.2026
А вот, что интересно, сказал мне ИИ-гугла:
Этот текст — эмоциональный пост пользователя под ником zorxor на интернет-форуме (вероятно, посвященном мистике, непознанному или альтернативной науке). . . .
|
Был праздник вчера, а я и не знал.
kumehtar 28.07.2026
27. 07. 2026г. Intel Core 2 Duo исполнилось 20 лет
Новости компьютерного мира и их обсуждение (4)
Салют, шампанское, овации!
:drink:
|
Нейтральные знания, чистый код - бла-бла-бла-бла, на самом деле кликбейт и самореклама, плагиат, и вот почему
Hrethgir 27.07.2026
То-есть отклонение такой публикации говорит само за себя, и пусть только возьмут на вооружение после отклонения публикации - это будет чистейшим актом плагиата. Отклонял Хабр.
Дословно, отклонённая. . .
|
тв 16 бой ии
anaschu 27.07.2026
Великий Перелом ИИ: Как уравнения ОДУ Radau дожали цензурные фильтры Алисы
Фиксируем в мемофонде Теории Всего беспрецедентный факт в истории ИИ-зондирования. В затяжном многораундовом. . .
|
|
мв 15. непроверенное, возможно, глюк
anaschu 27.07.2026
НАУЧНО-АНАЛИТИЧЕСКИЙ ОТЧЕТ. РАЗДЕЛ 1. 1: «НАУКА» (РАСШИРЕННАЯ СТЕХИОМЕТРИЧЕСКАЯ И ГЕНЕТИЧЕСКАЯ ВЕРСИЯ)Тема: Теоретическое обоснование инвариантности 19-мерного тензорного ядра непрерывных ОДУ и. . .
|
Очистка реквизитов и табличных частей документа при копировании (вариант 2)
Maks 26.07.2026
Алгоритм из решения ниже разработан на примере нетипового документа "ЗаявкаНаРаботу", разработанного в КА2.
Задача: Заменить алгоритм запрета копирования документов для сотрудников с ролью "Стажер",. . .
|
Доктрина интенционального знания - Доктрина для портала "Срез".
Hrethgir 25.07.2026
Может найдётся кто захочет оценить доктрину. . . Написания правил участия для меня роскошь, требующая лимита времени, поэтому все сообщения не прошедшие модерацию будут видны только участникам портала,. . .
|
сукцессия 44. Решил подать на припринт в межународные сервисы препринтов. Но нужно одобрение от ученых
anaschu 25.07.2026
Английский вариант. Пока кто то не одобрит мою личность, мне не получиться это опубликовать на препринте. Но заявку на публикацию статьи я сегодня подам.
|