powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Программирование [игнор отключен] [закрыт для гостей] / Есть у меня амбициозная идея.
24 сообщений из 24, страница 1 из 1
Есть у меня амбициозная идея.
    #32981974
Sarin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Суть.
Компилятор при создании исплняемого файла добавляет массу ненужного кода. Например Делфи при добавлении библиотеки компилирует её полностью. Даже если вам требуется один метод одного класса. Остальной код балластом висит в файле, а при исполнении в памяти. Это негативно отражается не только на весе программы, но и на временни её загрузки в память.

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

Как я хочу это сделать.
Сначала надо найти все вызовы (CALL), и заменить их на вызываемую функцию.
Затем определяется, на какие области памяти после INT 20 ссылается программа. Все эти участки запоминаются. Остальные просто удаляются.
На последнем этапе необходимо найти все участки повторяющегося кода, выделить их в процедуры, дописать в конец программы, а в теле заменить на CALL.

Вроде на словах всё просто.
Но я не знаю алгоритма поиска повторяющихся участков. А его вроде разрабатывали не один год.

Проект OpenSource.

Может кто поможет советом,
...
Рейтинг: 0 / 0
Есть у меня амбициозная идея.
    #32981977
didgik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Лучше напиши свой линкер. И компилятор.
Это попроще будет...
...
Рейтинг: 0 / 0
Есть у меня амбициозная идея.
    #32981985
Sarin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В чём ты видешь трудности?
...
Рейтинг: 0 / 0
Есть у меня амбициозная идея.
    #32981997
didgik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
                   ...
loc_AA2C6: 
                 add     bx, bx
                 jmp     cs:off_AADE9[bx]
                   ...

off_AADE9        dw offset loc_AAAC0     
                 dw offset loc_AABC9
                 dw offset loc_AAC23
                 dw offset loc_AAC92
                 dw offset loc_AA7D6
                 dw offset loc_AA7D6
                 dw offset locret_AADE7
                 dw offset loc_AA3E1
                 dw offset loc_AA42B
                 dw offset locret_AADE7
                 dw offset loc_AA4CC
                 dw offset loc_AA509
                   ...

И это еще простейший случай...
...
Рейтинг: 0 / 0
Есть у меня амбициозная идея.
    #32982054
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Sarin...если вам требуется один метод одного класса. Остальной код балластом висит в файле, а при исполнении в памяти. Это негативно отражается не только на весе программы, но и на временни её загрузки в память...


Для штучного решения это может иметь полезный эффект в виде уменьшения размера бинарника .. и все.

Если проект состоит из множества динамически связываемых библиотек, то лучше их обобщать а не расчленять ИМХО.

Sarin
Идея состоит в том, что надо найти ненужный код и удалить его из программы.


Лично меня больше интересует задача поиска паттернов в исходниках одного проекта, которые писались различными людьми и без соблюдения правил ООП и структуризации.
...
Рейтинг: 0 / 0
Есть у меня амбициозная идея.
    #32982075
CruelGenius
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Лучше купи еще памяти. У меня задача была написать простейший справочник.
Я так вообще засунул все данные недолго думая в память типа static.
А надо было конечно воспользоваться какой нить базенкой типа IB/FB или SQLite. Но я сделал проще. И как раз думал что памяти щас завались хошь диск на 240 гигов пожалйста, хочешь памят оперативки Гиг пожалуйста. И по деньгам не дорого.
...
Рейтинг: 0 / 0
Есть у меня амбициозная идея.
    #32982127
Sarin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Мне и мозгов и винта вполне хватает. Интересно просто это написать. Мне кажется это не настолько сложно и вполне востребованно.

Мы все слишком привыкли к тому, что места на винте хватит на любой нашь проект. И клиент к СУБД весом в 1Mb - очень маленькая прога. Знаете, что меня добило. ПХП в винде весит 22 Mb. В Линухе 285. Килобайт.
...
Рейтинг: 0 / 0
Есть у меня амбициозная идея.
    #32982232
Фотография mv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Попробуй поискать работу, за которую платят. И тебя перестанут расстраивать проблемы вроде "Клиент весом 1 мегабайт". У меня вот последний клиент 4,5 мегов - и, думаю, еще вырастет. Причем грузится он для запуска по сети. Слава Богу, прошли времена, кога приходилось со всякими QEMM долбаться. Лучше обрати внимание на алгоритмы обработки данных. Наверняка есть что оптимизировать.
...
Рейтинг: 0 / 0
Есть у меня амбициозная идея.
    #32982303
Sarin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Да я великолепно понимаю, что с местом сейчас проблем нет. И скорость работы зависит скорей от алгоритма. Но есть задачи, в которых не то что лишний метр - лишний килобайт КРАЙНЕ нежелателен.

Почему вы все пытаетесь меня отговорить от этой затеи? Вы пишите за деньги. И я, наверное, тоже когданибудь найду такую работу. А пока пишу в своё удовольствие, да перебиваюсь заказиками типа "нам нужна простенькая программа. Разработчика ищем среди студентов."
Ну это не считая основной работы с программёрством не связанной.

Меня не расстраимают проблемы с лишним мегабайтом. Меня расстраивает, что 900 Kb из этого мегабайта весят балластом.
...
Рейтинг: 0 / 0
Есть у меня амбициозная идея.
    #32983127
CruelGenius
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
У меня клиент 100 кбайт. Щас вот думаю на новую версию переехать он увеличится в три раза будет целых 300 кбайт. Зато с BLOB (мемо) полями работать будет.
...
Рейтинг: 0 / 0
Есть у меня амбициозная идея.
    #32984001
CruelGenius
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Sarin
Меня не расстраимают проблемы с лишним мегабайтом. Меня расстраивает, что 900 Kb из этого мегабайта весят балластом.
Тогда начинай программировать на VC++. Все остальные насуют тебе кучу всего нужных и ненужных длл.
Эта проблема еще с времен MSDOS 3.3
Обычная программка на клипере которая просчто выводит класический Helo world будет занимать около 200 кбт,
на С будет где то 10 кб, ну а на ассемблере будет ( если это .сом файл ) ччтоб не соврать <1 кб
...
Рейтинг: 0 / 0
Есть у меня амбициозная идея.
    #32984338
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
CruelGenius
Тогда начинай программировать на VC++. Все остальные насуют тебе кучу всего нужных и ненужных длл.
Эта проблема еще с времен MSDOS 3.3
Обычная программка на клипере которая просчто выводит класический Helo world будет занимать около 200 кбт,
на С будет где то 10 кб, ну а на ассемблере будет ( если это .сом файл ) ччтоб не соврать <1 кб

Такое программирование остановит прогресс ИМХО. Мы превратимся в кодеров которые делают уникальные и ни с чем не совместимые, немодульные решения.

По поводу com-файла... можно дойти до полного абсурда. Остается еще перенести BIOS процедуры прерываний в сам файл и операционака на фиг не нужна.

Судите сами ИМХО.
...
Рейтинг: 0 / 0
Есть у меня амбициозная идея.
    #32984867
Фотография S.G.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SarinЕсть у меня амбициозная идеяЗаймись алгоритмами. Реши задачу 8-ми ферзей. Сделай программу, составляющую кроссворды. Вычисли число пи с 70000 знаками.
Ну сделай свой интернет- магазин, наконец. Авось, пригодится :)
...
Рейтинг: 0 / 0
Есть у меня амбициозная идея.
    #32985031
didgik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
О! Идея. Пиши на форте. Там программы получаюца намного меньше чем ассемблерные. Ежели не считать самого форта. А при значительно размере проги и с самим фортом меньше.
...
Рейтинг: 0 / 0
Есть у меня амбициозная идея.
    #32985235
CruelGenius
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton CruelGenius
ну а на ассемблере будет ( если это .сом файл ) ччтоб не соврать <1 кб

Такое программирование остановит прогресс ИМХО. Мы превратимся в кодеров которые делают уникальные и ни с чем не совместимые, немодульные решения.

По поводу com-файла... можно дойти до полного абсурда. Остается еще перенести BIOS процедуры прерываний в сам файл и операционака на фиг не нужна.

Судите сами ИМХО.

Бедолаги из Intel выпускают и выпускаю свои компилятора C++.
И не знают что это останавливает прогресс. А равно и чудаки из мелкософта. Нет чтобы взять да и писать проги на Дельфи. Дельфи - двигатель прогресса.
А они то все на С++.

2 mayton По поводу .com я привел просто пример. Не надо кричать что это абсурд. Если вы не знали этот асбурд валяется в Win98 ( command.com ).

2 Sarin . Какие проблемы? Возьми и пробуй. Ассемблер знаешь?
Удачи! Я согласен с didgik это был не самый простой пример.
...
Рейтинг: 0 / 0
Есть у меня амбициозная идея.
    #32986398
Sarin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
CruelGenius[ ну а на ассемблере будет ( если это .сом файл ) ччтоб не соврать <1 кб
MOV не_помню_ вроде_AX, не_помню_вроде_09h
MOV не_помню_ вроде_BX, адрес_где_лежит_строка_hello_wordh
INT21h
INT20
адрес_где_лежит_строка_hello_wordh
Hello word[символ_окончания_строки_вроде_20]

Считаем: 3 + 3 + 2 + 2 + 11. Вроде 21 байт получился:)
...
Рейтинг: 0 / 0
Есть у меня амбициозная идея.
    #32986418
Sarin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Руки прочь от Делфи. Нельзя так жестоко говорить про умерших.
Я на ней писал, пока под виндой жил.

Ничего лучше под винду, для быстрой и качественной разработки нет, небыло и небудет.

Бедолаги из интела пишут, чтоб показать, что они круче АМД. Бедолаги из мелкософта родили чудовище, на котором писать долго и нудно. Если мне понадобится в Делфи очень маленькая прога под винду, я не VCL воспользуюсь, а WinAPI.

Моя идея такова, что пиши хоть на делфи, хоть на Интеле оптимизировать нуно всегда.
...
Рейтинг: 0 / 0
Есть у меня амбициозная идея.
    #32986454
Alexey Sh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 Sarin : оптимизировать можно не только машинный код, но и время и деньги.

Мы выполним ваш заказ быстро, качественно, недорого. Просьба выбрать 2 пункта
...
Рейтинг: 0 / 0
Есть у меня амбициозная идея.
    #32988233
Фотография Ayl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Sarin CruelGenius[ ну а на ассемблере будет ( если это .сом файл ) ччтоб не соврать <1 кб
MOV не_помню_ вроде_AX, не_помню_вроде_09h
MOV не_помню_ вроде_BX, адрес_где_лежит_строка_hello_wordh
INT21h
INT20
адрес_где_лежит_строка_hello_wordh
Hello word[символ_окончания_строки_вроде_20]

Считаем: 3 + 3 + 2 + 2 + 11. Вроде 21 байт получился:)

И то много!

7 байт на код, остальное на выводимую строку:
xchg ax, bp ; при старте COM-программы в регистре BP находится 09xx (1 байт)
mov dx, msg ; 3 байта
int 21h ; 2 байта
ret ; 1 байт
msg db 'Hello, World!$'
...
Рейтинг: 0 / 0
Есть у меня амбициозная идея.
    #32988310
Yossarian
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
>Почему вы все пытаетесь меня отговорить от этой затеи?

Потому что эта идея была реализована Борландом еще в 4м (!)
трубопаскале, 2м С и сейчас является стандартной фичей во всех
или почти всех компиляторах.
Для виртуальных методов этот номер не проходит, поэтому никто
не напрягается.
Что такое "после INT 20" я вообще не понял.


Washington Irving
...
Рейтинг: 0 / 0
Есть у меня амбициозная идея.
    #32988335
alex_k
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2sarin
без обид, но твои вопросы в форуме по линуксу, заставляют меня предпологать, что твоя амбициозная идея умрет не дождавшись реализации :-)
...
Рейтинг: 0 / 0
Есть у меня амбициозная идея.
    #32988337
alex_k
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
может быть стоит посмотреть на
upx ?
...
Рейтинг: 0 / 0
Есть у меня амбициозная идея.
    #32988719
Sarin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
alex_k2sarin
без обид, но твои вопросы в форуме по линуксу, заставляют меня предпологать, что твоя амбициозная идея умрет не дождавшись реализации :-)

Я когда начал учить ПХП и Перл (кстати из за них на sql.ru и оказался) в соответствующем форуме задавал ещё более тупые вопросы. Сейчас иногда захожу туда. Отвечаю... ПХП знаю очень и очень неплохо.

Вопрос: почему она не применима к виртуальным методам? А может не только к виртуальным?

После INT 20.

INT 20 - завершение программы. Точнее место, в котором проц делает регистры такими-же, как они были до начала выполнения проги. И (при многоадачной ОС) больше к этим (где прога валялась) сигментам не возвращается.
...
Рейтинг: 0 / 0
Есть у меня амбициозная идея.
    #32988740
Yossarian
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
>INT 20 - завершение программы. Точнее место, в котором проц делает
>регистры такими-же, как они были до начала выполнения проги. И (при
>многоадачной ОС) больше к этим (где прога валялась) сигментам не
>возвращается

Cпасибо, все понятно.

Washington Irving
...
Рейтинг: 0 / 0
24 сообщений из 24, страница 1 из 1
Форумы / Программирование [игнор отключен] [закрыт для гостей] / Есть у меня амбициозная идея.
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]