169 похожих чатов

Несколько месяцев назад КТ315 предлагал делать библиотеки для фасма в

виде инклудов (плюс магия). По мотивам всего этого возник достаточно бесполезный проект. В пакете MASM32 существует утилита bintodb, которая преобразовывает бинарные файлы в ассемблерные .inc. Делает она это самым простым и очевидным способом - db nn,nnn,n.... При этом размер файла увеличивается более чем в три раза (две десятичных цифры в среднем и запятая). Нужно написать программу, которая оптимизирует размер прилагаемого исходника так, чтобы результат компиляции не изменился.

Можно использовать: директивы db/dw/dd/dq и rb/rw/rd/rq (1), оператор dup (2), десятичные и шестандацатеричные числа (3), символьные константы вместо чисел (4), строки в одинарных и двойных кавычках. Нельзя использовать всё остальное (возможности препроцессора, другие директивы и возможности ассемблера, числа с плавающей точкой, инструкции x86 😁). Ограничения выбраны такие, чтобы не возникало искушения реализовать inflate на макроязыке фасма :)

Язык программирования любой, важен только результат. Сгенерированный ассемблерный файл должен собираться в fasm, но можно предусмотреть опциональную совместимость с masm (отличия ниже). Максимальная длина строк 110 символов, заполнение строк в среднем не менее 50% (5). В файле должны быть только переводы строк и печатаемые ASCII-символы (0x0a, 0x0d, 0x20...0x7e).

1. При использовании rb в конце файла нули не попадут в выходной файл, но исходник всё равно должен резервировать правильное количество байтов. В masm отдельных директив резервирования нет, можно использовать ? и dup(?).
2. В masm круглые скобки у dup обязательны, в fasm их можно опустить, если в списке повтора только один элемент.
3. В fasm есть шестандцатеричные числа с префиксом $. Они самые короткие, но их нет в masm.
4. dd 'ABCD' в fasm это dd 0x44434241, в masm это dd 0x41424344.
5. Как-нибудь так: (file_size / ((110 + 2) * num_lines)) * 100.

13 ответов

38 просмотров

Стикер

а можно пример входных и выходных данных?

Mixail Frolov
а можно пример входных и выходных данных?

Вот компилируется .bin, потом читаешь его в программе, оптимизируешь по шаблонам максимально короткие директивы (например, 100 одинаковых значений можно заменить на dup), и записываешь куда-нибудь в выходной файл .asm.

Fasm их разворачивает

Тогда в чат по Python скинешь.

s54820- Автор вопроса
Арч-чан 🢀🢀🢀🢀🢀🢀🢀🢀🢀🢀🢀🢀🢀🢀🢀🢀🢀🢀🢀🢀🢀🢀🢀🢀🢀🢀🢀🢀🢀🢀🢀🢀
Зачем? Буду писать на питоне.

Я же сказал: бесполезный проект :) Что касается питона, то можно во флудилку уйти, если интересно. Лично я считаю, что попытка реализовать это на асме без прототипа на любом высокоуровневом языке чревата годами отладки. Вот когда алгоритм будет — можно попытаться. Может даже получится обогнать какой-нибудь Си — там миллионы сравнений.

s54820
Я же сказал: бесполезный проект :) Что касается пи...

ну пару простых методов(перевод на dd из db и dup вполне и без прототипа получится сделать)

Похожие вопросы

Обсуждают сегодня

а зачем этот вопрос для удаления из чата?
Mёdkinson Medvezhkin
63
Эх кто-то пришел и весь праздник испортил :( You need complex FBX scene importing setup to change things on import? good luck with that. You need navigation and pathfinding? g...
Serg Gini
5
Всем привет! Подскажите. Я написал приложение на Delphi 10.2 Tokyo под Windows 10. И передо мной стал вопрос о том чтобы сделать это приложение кроссплатформенным (под Linux и...
Дмитрий Завгородний
24
Почему стало ломаться на D11? "739002.86400000' is not a valid timestamp" function IncDateTime(aStamp:TTimeStamp;aKind:TTriggerKind;aInterval:Integer):TDateTime; //aStamp = 2...
Катерина Свиридова
8
Привет всем. Подскажите где можно посмотреть, какая версия электрон, поддерживает версии windows? Некий changelog. Мне бы желательно, поддержку 7,8,10... latest, как понимаю и...
Anonym Squad
21
думаешь я не смогу также сделать? мне это просто не удобно
int 💳 𝙖𝙞𝙧 𝙗𝙞𝙜 𝙗𝙤𝙗 🔫 check bio / spam block / AFK / nohello.com / GMT+3
9
Портфолио: Зовут меня Александр, мне 36 лет. Город Пушкино. Общий рабочий стаж: ~14 лет Уровень квалификации: Senior Full-stack developer Где прочесть мой код? https://github....
Magic
10
Ребят, чет я уже не догоняю... Крч в коде на асм там происходит нечто вроде a+число (a+1, a+2 и т.д.). Но почему строка lea ecx, [edx+1] работает как a+1?? В edx берется адрес...
Alan 🔝 Бэброу
3
Есть ли смысл устраиваться на 1с ? Даст это плюс в дальнейшем трудоустройстве на php? Просто у меня в городе вакансий на пхп нету. Или лучше удаленно искать. Опыта работы нету...
Azamat
14
hi im a cs student. i need some advice from people who have enough experience in Embedded Software. I need to know whether this profession is suitable for me. I have watched s...
Sahand 🏔️
8
Карта сайта