|
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
|
|
| 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 на язык Ассемблер
Перевод из языка ассемблер в язык паскаль Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
| Опции темы | |
|
|
Новые блоги и статьи
|
|||
|
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
Прошло две недели. Я уже рассказывал, как разговаривал с сотрудниками у сортировки и как понял, что главная ветка — не про приёмку, а про отбор. Но тогда я думал, что понял механику. На этой неделе я. . .
|