Форум программистов, компьютерный форум, киберфорум
C (Си)
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 5.00/9: Рейтинг темы: голосов - 9, средняя оценка - 5.00
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
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
15.09.2020, 16:02
Ответы с готовыми решениями:

Написание транслятора с языка Паскаль на язык ассемблер (FASM)
Здравствуйте, поскольку в программировании - новичок, очень большой проблемой стало следующее задание - написание транслятора с языка...

Какова примерно трудоёмкость задачи - написать свою собственную ORM?
Какова примерно трудоёмкость задачи - написать свою собственную ORM ? Т.е. сколько по времени потребуется? Можно конечно,...

Какова последовательность написания программы для отбора корней
Здравствуйте! Была вот такая тема: https://www.cyberforum.ru/mathcad/thread918530.html Попытался создать по образу и подобию, но...

25
83 / 1 / 0
Регистрация: 08.11.2017
Сообщений: 146
14.11.2020, 20:08  [ТС]
Студворк — интернет-сервис помощи студентам
Да, в этом случае проще - привязываться к ОС.
0
Модератор
2131 / 1000 / 170
Регистрация: 23.07.2018
Сообщений: 3,349
Записей в блоге: 3
14.11.2020, 20:16
Тогда и для синхронизации доступа можно использовать готовые функции Windows.

Не по теме:

Вопрос в том, где этот один человек возьмёт этот один мифический человеко-год...

0
83 / 1 / 0
Регистрация: 08.11.2017
Сообщений: 146
14.11.2020, 20:24  [ТС]
Цитата Сообщение от politoto Посмотреть сообщение
Вопрос в том, где этот один человек возьмёт этот один мифический человеко-год...
У меня в жизни был проект, по своему интересу (а позже ещё и изучением принципов нейросетей хочу заняться. Также, может быть напишу, и свой простой компилятор). Разрабатывал я тот проект 4 года, но и не по 40 часов в неделю (то основная работа). Свой проект - по своим интересам, не на работодателя. А 4 года , только по субботам-воскресеньям (и то не всегда) - выходит, где то на один человеко-год, я и наработал.
0
Модератор
2131 / 1000 / 170
Регистрация: 23.07.2018
Сообщений: 3,349
Записей в блоге: 3
14.11.2020, 21:54

Не по теме:

Цитата Сообщение от SergeyYN Посмотреть сообщение
Задают вопрос. Какова трудоёмкость написания транслятора с языка Си на язык ассемблер? В человеко-днях.
А кто задаёт, если не секрет?
Цитата Сообщение от SergeyYN Посмотреть сообщение
С нуля. 3 месяца?? :0 Я в шоке.
Автопоиск показал, что с некоторых студентов требуют за 3 дня...
Компилятор с С++ на Ассемблер
Компилятор с языка PL/1 на язык Ассемблер
Написание транслятора с языка Паскаль на язык ассемблер (FASM)

0
15.11.2020, 00:07

Не по теме:

Цитата Сообщение от politoto Посмотреть сообщение
Автопоиск показал, что с некоторых студентов требуют за 3 дня...
Угу. Там только парсинг синтаксиса займёт 1 год/чел. А если более менее компилер делать, с оптимизациями, обходом UB и т.п., то вообще 10 лет в одно рыло....

0
Модератор
2131 / 1000 / 170
Регистрация: 23.07.2018
Сообщений: 3,349
Записей в блоге: 3
15.11.2020, 19:46
Цитата Сообщение от SergeyYN Посмотреть сообщение
может быть напишу, и свой простой компилятор
Несложная реализация существенного на первый взгляд подмножества С11.
https://github.com/rui314/chibicc
Префиксные ++ и --
https://github.com/rui314/chib... 8d4f15f19f

Компилятор генерирует файлы на входном языке ассемблера из GNU binutils (x86_64)
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
15.11.2020, 19:46

Определить язык написания строки
Определить на каком языке написана строка , англ или укр. Дайте совет по алгоритму проверки строки.

Компилятор с языка PL/1 на язык Ассемблер
Подскажите как написать компилятор на языке Си. Может быть есть примеры какие-нибудь, книги понятные. Начинала читать Ахо, Ульмана, как то...

Проверить правильность написания. Английский язык
Здравствуйте, я составила 7 предложений. Просьба проверить, есть ли в пересказе ошибки? 1) The pаper gives information on problems that...

Выбрать язык для написания браузера
Добрый день, в целях обучения, даже как хобби, каждый день сидеть зудить над клавиатурой, у меня появилась мечта написать браузер, я знаю...

Перевод из языка ассемблер в язык паскаль
mov esi,eax mov eax,ebx mov ebx,3 imul ebx or ecx,1 add eax,esi cdq idiv ecx


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

Или воспользуйтесь поиском по форуму:
26
Ответ Создать тему
Новые блоги и статьи
Из невошедшего на форум (диалог с ИИ-гугла)
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
Английский вариант. Пока кто то не одобрит мою личность, мне не получиться это опубликовать на препринте. Но заявку на публикацию статьи я сегодня подам.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru