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

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

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

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

Проект OpenSource.

Может кто поможет советом,
...
Рейтинг: 0 / 0
25.03.2005, 23:36
    #32981977
didgik
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Есть у меня амбициозная идея.
Лучше напиши свой линкер. И компилятор.
Это попроще будет...
...
Рейтинг: 0 / 0
25.03.2005, 23:44
    #32981985
Sarin
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Есть у меня амбициозная идея.
В чём ты видешь трудности?
...
Рейтинг: 0 / 0
26.03.2005, 00:09
    #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
26.03.2005, 05:58
    #32982054
mayton
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Есть у меня амбициозная идея.
Sarin...если вам требуется один метод одного класса. Остальной код балластом висит в файле, а при исполнении в памяти. Это негативно отражается не только на весе программы, но и на временни её загрузки в память...


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

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

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


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

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

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

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

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

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

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

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

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

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

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

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

2 Sarin . Какие проблемы? Возьми и пробуй. Ассемблер знаешь?
Удачи! Я согласен с didgik это был не самый простой пример.
...
Рейтинг: 0 / 0
29.03.2005, 14:44
    #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
29.03.2005, 14:51
    #32986418
Sarin
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Есть у меня амбициозная идея.
Руки прочь от Делфи. Нельзя так жестоко говорить про умерших.
Я на ней писал, пока под виндой жил.

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

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

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

Мы выполним ваш заказ быстро, качественно, недорого. Просьба выбрать 2 пункта
...
Рейтинг: 0 / 0
30.03.2005, 12:19
    #32988233
Ayl
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
30.03.2005, 12:41
    #32988310
Yossarian
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Есть у меня амбициозная идея.
>Почему вы все пытаетесь меня отговорить от этой затеи?

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


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

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

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

После INT 20.

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

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

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


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