83 / 1 / 0
Регистрация: 08.11.2017
Сообщений: 146

Какова трудоёмкость написания транслятора с Си на язык ассемблер?

15.09.2020, 16:02. Показов 2215. Ответов 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
Ответ Создать тему
Опции темы

Новые блоги и статьи
Hyper-V: Компьютер должен поддерживать доверенный платформенный модуль 2.0.
Maks 31.08.2026
При установке Windows 11 на виртуальную машину Hyper-V 2-го поколения вылезла такая ошибка: Решение: в параметрах виртуальной машины, в разделе "Безопасность" (Security) активировать флаг. . .
Архитектура биовида Стива в Майнкрафте: Зачем бонобо кубический каннибализм
anaschu 30.08.2026
Кубический Вагинокапитализм в Minecraft: Математический инвариант ОДУ и рок Стивов-бонобо Главная задача разработанной «Модели Всего» — наглядно продемонстрировать наличие системной «судьбы». . .
Оттачиваю умение писать js программы.
russiannick 30.08.2026
Проектом выходного дня стало написание Книги шифров Виженера. Итогом стала версия 200, синий туман. Синий туман назван так, потому что замораживает текст под собой. Нажатие синих кнопок управляют. . .
мат медиц модель 30. презентация проекта
anaschu 27.08.2026
хоп хоп хоп хидахоп, а я кладую))
Как у меня протекала болезнь
zorxor 27.08.2026
Здравствуйте, друзья! Эта запись блога предназначена именно для вас - для моих дорогих друзей, которые знали меня лично. Чтобы ответить на вопрос - а что же со мной произошло на самом деле? Я учился. . .
Нашел вот забавное видео о измерениях. Лучшее что я видел на эту тему
kumehtar 26.08.2026
ILETXiw9bMQ Основная суть и тезисы по измерениям: 0D (Нулевое измерение): точка, не имеющая длины, ширины, высоты или объема. Объект не может перемещаться в 0D. 1D (Первое измерение):. . .
[EasyBuilder Pro] Памятка по разработке для панелей Weintek
ФедосеевПавел 26.08.2026
Памятка по разработке для панелей Weintek ВВЕДЕНИЕ Ранее, при реализации проектов основное внимание уделял разработке управляющей программы для контроллера, а панели оператора доставалось время. . .
Модель по догадкам
anaschu 25.08.2026
Прошло две недели. Я уже рассказывал, как разговаривал с сотрудниками у сортировки и как понял, что главная ветка — не про приёмку, а про отбор. Но тогда я думал, что понял механику. На этой неделе я. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru