Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Низкоуровневое программирование > Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 27.05.2019, 11:57   #11
Pavia
Лис
Старожил
 
Аватар для Pavia
 
Регистрация: 18.09.2015
Сообщений: 2,409
По умолчанию

Есть куча способов получить исполняемый файл.

Цитата:
Сообщение от p51x Посмотреть сообщение
Потому что принтф содержит форматную строку и ее разбор, даже в ИДЕ для микроконтроллеров есть опция использовать либу с полным принтфом, урезанным и без поддержки форматирования.
Да не только у микро контролёров. Есть куча техник для замены стандартной библиотеки или отказа от неё.
Замены стартера(Bootstrap).
https://wiki.osdev.org/Bare_Bones
Сжатия и выкидывания секций через линкер.

А сравнивать 16 битный код смысла нету. Тогда компиляторы были маленькие писались малыми коллективами. А сейчас есть x64 есть АРМ. Над оптимизацией которых бьются уже большие коллективы, да даже колоборации коллективов. Взять хотя бы уровни оптимизации которых стало больше с -O2 до -О4. И на каждом уровне есть просто куча различных техник и приемов.

И вот это только для начала:
https://wasm.in/blogs/optimizacija-d...ium-chast-1.9/
https://www.intel.com/content/dam/ww...ion-manual.pdf
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
У дзен программиста программа делает то что он хотел, а не то что он написал .
Pavia вне форума Ответить с цитированием
Старый 27.05.2019, 13:09   #12
xwicked
Участник клуба
 
Аватар для xwicked
 
Регистрация: 21.03.2010
Сообщений: 1,508
По умолчанию

Цитата:
Сообщение от Pavia Посмотреть сообщение
... Взять хотя бы уровни оптимизации которых стало больше с -O2 до -О4. И на каждом уровне есть просто куча различных техник и приемов
Я же просил об этом не писать. Напиши пустую программу на С и собери GCC с -О4, ты удивишься её размеру. Я здесь и хочу разобраться, почему после оптимизации "воздуха" получаются "кирпичи". Это мегамозги думают? Вопрос, чем они руководствуются, чтобы добавлять этот "мусор"?
Google - лучший помощник программиста.
---
моя лаборатория | мой FaceBook
xwicked вне форума Ответить с цитированием
Старый 27.05.2019, 13:15   #13
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,707
По умолчанию

Написал. Выхлоп пустой:
Код:
main:
        ret
p51x вне форума Ответить с цитированием
Старый 27.05.2019, 13:16   #14
xwicked
Участник клуба
 
Аватар для xwicked
 
Регистрация: 21.03.2010
Сообщений: 1,508
По умолчанию

Цитата:
Сообщение от p51x Посмотреть сообщение
Написал. Выхлоп пустой:
Код:
main:
        ret
Сколько КБ?
Google - лучший помощник программиста.
---
моя лаборатория | мой FaceBook
xwicked вне форума Ответить с цитированием
Старый 27.05.2019, 13:19   #15
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,707
По умолчанию

Кб чего? Одной инструкции?
p51x вне форума Ответить с цитированием
Старый 27.05.2019, 13:21   #16
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Цитата:
Сообщение от xwicked Посмотреть сообщение
Вопрос, чем они руководствуются, чтобы добавлять этот "мусор"
Что Вы называете "мусором"?

смотрите. Аналог такой.
у меня есть велосипед. Там два колеса, сидение, руль. я прицепил моторчик, бензобак. Получилось конструкция типа "мопед". вес получился 60 кг.
Решил добавить руль, пару колёс, сидения, корпус. Двигатель чуть побольше, бак. Получился автомобиль. Почему вес стал в 20 раз больше и зачем добавили весь этот "мусор" ?!
Serge_Bliznykov вне форума Ответить с цитированием
Старый 27.05.2019, 13:38   #17
xwicked
Участник клуба
 
Аватар для xwicked
 
Регистрация: 21.03.2010
Сообщений: 1,508
По умолчанию

Цитата:
Сообщение от Serge_Bliznykov Посмотреть сообщение
Что Вы называете "мусором"? ... Получился автомобиль. Почему вес стал в 20 раз больше и зачем добавили весь этот "мусор" ?!
Пустая программа на ассемблере будет на 300-400 байт ещё меньше, чем 800. основную массу там даёт текст, содержащийся в ней.
Есть 2 велосипедные рамы, которые ничего не делают. Почему одна весит допустим 300 байт, а другая 4 КБ. За счёт чего? Она лучше, красивее, прочнее? К программам это не применимо, только отказоустойчивость. Она более защищена от взлома?
Даввайте только не гадать, а анализировать код?
Google - лучший помощник программиста.
---
моя лаборатория | мой FaceBook
xwicked вне форума Ответить с цитированием
Старый 27.05.2019, 13:43   #18
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,707
По умолчанию

Цитата:
Сообщение от xwicked Посмотреть сообщение
Даввайте только не гадать, а анализировать код?
Давайте. Приводите аналогичный код на асме и С. Приводите выхлоп компилятора и проводите анализ прям по пунктам: заголовок столько-то, под стек там выделено столько-то, тут столько-то, там столько-то сегментов/таблиц/..., тут ....

P.S. И указывайте опции обязательно.
p51x вне форума Ответить с цитированием
Старый 27.05.2019, 15:23   #19
Pavia
Лис
Старожил
 
Аватар для Pavia
 
Регистрация: 18.09.2015
Сообщений: 2,409
По умолчанию

Код:
; example of simplified Windows programming using complex macro features

include 'win32ax.inc' ; you can simply switch between win32ax, win32wx, win64ax and win64wx here

.code

  start:

	invoke	MessageBox,HWND_DESKTOP,"Hi! I'm the example program!","Hello!",MB_OK

	invoke	ExitProcess,0

.end start
Код:
#include <windows.h>
void Main()
{
    MessageBox(NULL, "Hi! I'm the example program!", "Hello!", MB_OK);
    return ;
}
Компилирую вот так:
"Famw.exe hello.asm"
"C:\Qt\Qt5.2.0\Tools\mingw48_32\bin \i686-w64-mingw32-g++.exe" -s HELLOC.CPP -o helloc.exe -nostdlib -Wl,-b=pe-i386,-luser32,--subsystem=windows -s"

1.5 и 3 Кб. Можно ещё сжать там полно нулей.
https://yadi.sk/d/0n9nZPg8H1xVsQ

P.S. Почему-то к сообщению не цепляются файлы.
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
У дзен программиста программа делает то что он хотел, а не то что он написал .

Последний раз редактировалось Pavia; 27.05.2019 в 16:41.
Pavia вне форума Ответить с цитированием
Старый 27.05.2019, 17:32   #20
Mikl___
Участник клуба
 
Регистрация: 11.01.2010
Сообщений: 1,139
По умолчанию

В онлайновом учебнике по программированию на ассемблере в win32 (перевод UniSoft) есть такие строки: «Я провел эксперимент, написал программу (обычное окно с одной кнопкой в центре, которая закрывает его) на разных языках высокого уровня и после компиляции получил вот такие размеры этой самой программы:
Код:
            программа    | размер 
-------------------------+------------
C++ Builder 4            |22 kb
Delphi 5	         |291 kb
Delphi 5 + библиотека KOL|26 kb
Ассемблер MASM	         |около 3 kb
Сказки дядюшки Римуса --> "Глава третья. Как Братец Кролик уменьшал размер программы"

Последний раз редактировалось Mikl___; 27.05.2019 в 17:35.
Mikl___ вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Реализация других языков в Visual Basic pikachu_182 Помощь студентам 0 27.05.2012 16:11
Как компиляторы для языков программирования пишутся на самих себе? bullvinkle Свободное общение 29 19.03.2010 15:47
вместо номера телефона выводится на экран какой-то мусор le_den Общие вопросы C/C++ 2 25.11.2008 20:45
компиляторы и трансляторы PDP-10 FORTRAN, PDP-1 Assembler и PERL akimovster Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 2 24.07.2007 05:59