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

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

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

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

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

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

Цитата:
Сообщение от xwicked Посмотреть сообщение
WinApi не приводим, оно весит килотонну. Это отдельные либы. вы не понимаете разницу? Сжимать ничего не нужно, в асме оно просто не имеет размера, без сжатия...
Тогда Вы DOS не используйте. Размер там есть. Но Вам уже писали что надо сравнивать секции.
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
У дзен программиста программа делает то что он хотел, а не то что он написал .
Pavia вне форума Ответить с цитированием
Старый 27.05.2019, 18:17   #32
Alex11223
Старожил
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 19,500
По умолчанию

Цитата:
Сообщение от xwicked Посмотреть сообщение
i3 + 6GB RAM
так производительность и потребление памяти не особо зависит от размера .ехе
несколько сотен КБ даже на 120 ГБ SSD найдётся.
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом.
Alex11223 вне форума Ответить с цитированием
Старый 27.05.2019, 18:24   #33
Mikl___
Участник клуба
 
Регистрация: 11.01.2010
Сообщений: 1,139
По умолчанию

Цитата:
Сообщение от xwicked Посмотреть сообщение
Просто профессионалы не всегда охотно хотят помогать новичкам, но вдруг?
Вроде бы сам вопрос задал
Цитата:
Сообщение от xwicked Посмотреть сообщение
Я больше не буду отвечать на флуд.
И сам на него же и ответил
Mikl___ вне форума Ответить с цитированием
Старый 27.05.2019, 21:18   #34
xwicked
Участник клуба
 
Аватар для xwicked
 
Регистрация: 21.03.2010
Сообщений: 1,508
По умолчанию

В коде ассемблера сократил текст до точки:
Код:
message db '. $'
Размер получился 801 байт.
Код С заменил:
Код:
puts(".");
В настройках убрал отладочную информацию и сделал оптимизацию размера. Получилось 6,86КБ. Пошёл искать отладчик и дизассемблер, буду "делать вскрытие".
Google - лучший помощник программиста.
---
моя лаборатория | мой FaceBook
xwicked вне форума Ответить с цитированием
Старый 27.05.2019, 22:46   #35
waleri
Старожил
 
Регистрация: 13.07.2012
Сообщений: 6,330
По умолчанию

Если будете сравнивать яблоки с апельсинами далеко не уедете.
Вызовите puts из ассемблера и сравните результат.

А насчет дизассемблера, компилятор может генерить ассемблерский файл.
waleri вне форума Ответить с цитированием
Старый 28.05.2019, 02:51   #36
Mikl___
Участник клуба
 
Регистрация: 11.01.2010
Сообщений: 1,139
По умолчанию

xwicked,
сравниваешь не сравниваемое, там где
Цитата:
Сообщение от xwicked Посмотреть сообщение
В коде ассемблера сократил текст до точки
программа для DOS, там где
Цитата:
Сообщение от xwicked Посмотреть сообщение
Код С
программа для Windows
Mikl___ вне форума Ответить с цитированием
Старый 28.05.2019, 09:12   #37
xwicked
Участник клуба
 
Аватар для xwicked
 
Регистрация: 21.03.2010
Сообщений: 1,508
По умолчанию

Код:
Borland C++ - Copyright 1991 Borland Intl. Null pointer assignment
Divide error
Abnormal program termination
00002A60            5F 5F 63 6C 65  61 6E 75 70 00 5F 5F 63      __cleanup __c
00002A70   68 65 63 6B 6E 75 6C 6C  00 5F 5F 74 65 72 6D 69   hecknull __termi
00002A80   6E 61 74 65 00 5F 5F 72  65 73 74 6F 72 65 7A 65   nate __restoreze
00002A90   72 6F 00 5F 61 62 6F 72  74 00 44 47 52 4F 55 50   ro _abort DGROUP
00002AA0   40 00 5F 5F 4D 4D 4F 44  45 4C 00 5F 6D 61 69 6E   @ __MMODEL _main
00002AB0   00 5F 61 74 65 78 69 74  00 5F 65 78 69 74 00 5F    _atexit _exit _
00002AC0   5F 65 78 69 74 00 5F 5F  63 65 78 69 74 00 5F 5F   _exit __cexit __
00002AD0   63 5F 65 78 69 74 00 5F  5F 49 4F 45 52 52 4F 52   c_exit __IOERROR
00002AE0   00 5F 5F 44 4F 53 45 52  52 4F 52 00 5F 69 73 61    __DOSERROR _isa
00002AF0   74 74 79 00 5F 5F 4C 4F  4E 47 54 4F 41 00 5F 5F   tty __LONGTOA __
00002B00   55 54 4F 41 00 5F 6C 73  65 65 6B 00 5F 5F 72 65   UTOA _lseek __re
00002B10   61 64 00 5F 5F 73 63 61  6E 6E 65 72 00 5F 5F 73   ad __scanner __s
00002B20   63 61 6E 74 6F 6C 00 5F  5F 73 65 74 75 70 69 6F   cantol __setupio
00002B30   00 5F 74 65 6C 6C 00 5F  5F 56 50 52 49 4E 54 45    _tell __VPRINTE
00002B40   52 00 5F 5F 5F 62 72 6B  00 5F 5F 5F 73 62 72 6B   R ___brk ___sbrk
00002B50   00 5F 62 72 6B 00 5F 73  62 72 6B 00 5F 66 72 65    _brk _sbrk _fre
00002B60   65 00 5F 6D 61 6C 6C 6F  63 00 5F 72 65 61 6C 6C   e _malloc _reall
00002B70   6F 63 00 5F 5F 52 45 41  4C 43 56 54 00 5F 5F 73   oc __REALCVT __s
00002B80   63 61 6E 74 6F 64 00 5F  5F 73 63 61 6E 72 73 6C   cantod __scanrsl
00002B90   74 00 5F 5F 73 63 61 6E  70 6F 70 00 5F 65 6F 66   t __scanpop _eof
00002BA0   00 5F 66 66 6C 75 73 68  00 5F 66 6C 75 73 68 61    _fflush _flusha
00002BB0   6C 6C 00 5F 66 73 65 65  6B 00 5F 66 74 65 6C 6C   ll _fseek _ftell
00002BC0   00 5F 5F 66 67 65 74 63  00 5F 5F 4E 66 67 65 74    __fgetc __Nfget
00002BD0   63 00 5F 66 67 65 74 63  00 5F 66 67 65 74 63 68   c _fgetc _fgetch
00002BE0   61 72 00 5F 6D 65 6D 63  70 79 00 5F 70 72 69 6E   ar _memcpy _prin
00002BF0   74 66 00 5F 5F 66 70 75  74 63 00 5F 66 70 75 74   tf __fputc _fput
00002C00   63 00 5F 66 70 75 74 63  68 61 72 00 5F 5F 46 50   c _fputchar __FP
00002C10   55 54 4E 00 5F 5F 5F 72  65 61 64 00 5F 73 63 61   UTN ___read _sca
00002C20   6E 66 00 5F 73 65 74 76  62 75 66 00 5F 5F 4E 75   nf _setvbuf __Nu
00002C30   6E 67 65 74 63 00 5F 75  6E 67 65 74 63 00 5F 5F   ngetc _ungetc __
00002C40   5F 77 72 69 74 65 00 5F  5F 77 72 69 74 65 00 5F   _write __write _
00002C50   5F 78 66 66 6C 75 73 68  00 44 41 54 41 53 45 47   _xfflush DATASEG
00002C60   40 00 5F 5F 49 6E 74 30  56 65 63 74 6F 72 00 5F   @ __Int0Vector _
00002C70   5F 49 6E 74 34 56 65 63  74 6F 72 00 5F 5F 49 6E   _Int4Vector __In
00002C80   74 35 56 65 63 74 6F 72  00 5F 5F 49 6E 74 36 56   t5Vector __Int6V
00002C90   65 63 74 6F 72 00 5F 5F  43 30 61 72 67 63 00 5F   ector __C0argc _
00002CA0   5F 43 30 61 72 67 76 00  5F 5F 43 30 65 6E 76 69   _C0argv __C0envi
00002CB0   72 6F 6E 00 5F 5F 65 6E  76 4C 6E 67 00 5F 5F 65   ron __envLng __e
00002CC0   6E 76 73 65 67 00 5F 5F  65 6E 76 53 69 7A 65 00   nvseg __envSize 
00002CD0   5F 5F 70 73 70 00 5F 5F  6F 73 76 65 72 73 69 6F   __psp __osversio
00002CE0   6E 00 5F 5F 6F 73 6D 61  6A 6F 72 00 5F 5F 76 65   n __osmajor __ve
00002CF0   72 73 69 6F 6E 00 5F 5F  6F 73 6D 69 6E 6F 72 00   rsion __osminor 
00002D00   5F 65 72 72 6E 6F 00 5F  5F 53 74 61 72 74 54 69   _errno __StartTi
00002D10   6D 65 00 5F 5F 5F 68 65  61 70 62 61 73 65 00 5F   me ___heapbase _
00002D20   5F 5F 62 72 6B 6C 76 6C  00 5F 5F 68 65 61 70 62   __brklvl __heapb
00002D30   61 73 65 00 5F 5F 62 72  6B 6C 76 6C 00 5F 5F 68   ase __brklvl __h
00002D40   65 61 70 74 6F 70 00 5F  5F 61 74 65 78 69 74 63   eaptop __atexitc
00002D50   6E 74 00 5F 5F 63 74 79  70 65 00 5F 5F 65 78 69   nt __ctype __exi
00002D60   74 62 75 66 00 5F 5F 65  78 69 74 66 6F 70 65 6E   tbuf __exitfopen
00002D70   00 5F 5F 65 78 69 74 6F  70 65 6E 00 5F 5F 73 74    __exitopen __st
00002D80   72 65 61 6D 73 00 5F 5F  6E 66 69 6C 65 00 5F 5F   reams __nfile __
00002D90   6F 70 65 6E 66 64 00 5F  5F 68 65 61 70 6C 65 6E   openfd __heaplen
00002DA0   00 5F 5F 64 6F 73 65 72  72 6E 6F 00 5F 5F 64 6F    __doserrno __do
00002DB0   73 45 72 72 6F 72 54 6F  53 56 00 5F 5F 73 74 6B   sErrorToSV __stk
00002DC0   6C 65 6E 00 5F 5F 66 69  72 73 74 00 5F 5F 6C 61   len __first __la
00002DD0   73 74 00 5F 5F 72 6F 76  65 72 00 5F 5F 52 65 61   st __rover __Rea
00002DE0   6C 43 76 74 56 65 63 74  6F 72 00 5F 5F 53 63 61   lCvtVector __Sca
00002DF0   6E 54 6F 64 56 65 63 74  6F 72 00 5F 5F 61 74 65   nTodVector __ate
00002E00   78 69 74 74 62 6C 00 5F  5F 63 76 74 66 61 6B 00   xittbl __cvtfak 
00002E10   5F 5F 41 48 53 48 49 46  54 00 5F 5F 41 48 49 4E   __AHSHIFT __AHIN
00002E20   43 52 00 53 31 2E 43 50  50 00 53 31 00 66 70 6F   CR S1.CPP S1 fpo
00002E30   73 5F 74 00 73 69 7A 65  5F 74 00                  s_t size_t
Текст вверху - обработка ошибки. это понятно. А в конце какая-то фигня. Похоже на типы данных и функции, но зачем? С расчётом, что программа будет модифицироваться "на лету"?
Google - лучший помощник программиста.
---
моя лаборатория | мой FaceBook
xwicked вне форума Ответить с цитированием
Старый 28.05.2019, 09:16   #38
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,707
По умолчанию

Точно, но вы как-то плохо скомпилировали. Как я уже говорил, компилятор и линкер пихают все винапи, стл и остальное на всякий случай.
p51x вне форума Ответить с цитированием
Старый 28.05.2019, 09:22   #39
xwicked
Участник клуба
 
Аватар для xwicked
 
Регистрация: 21.03.2010
Сообщений: 1,508
По умолчанию

Цитата:
Сообщение от p51x Посмотреть сообщение
Точно, но вы как-то плохо скомпилировали. Как я уже говорил, компилятор и линкер пихают все винапи, стл и остальное на всякий случай.
Допустим это отладочная информация, где мне найти 16-битный strip?
Google - лучший помощник программиста.
---
моя лаборатория | мой FaceBook
xwicked вне форума Ответить с цитированием
Старый 28.05.2019, 09:26   #40
Mikl___
Участник клуба
 
Регистрация: 11.01.2010
Сообщений: 1,139
По умолчанию

xwicked,
давай начнем с твоей программы на ассемблере и уменьшим ее на 512 байт
Оригинал
Код:
data    segment para public 'data'
message db 'Hello World! No war and bomb! Let us live fiendly and learn assembler language. $'
data    ends
stk segment stack
    db 256 dup ('?')
stk ends
code    segment para public 'code'
main    proc
    assume cs:code,ds:data,ss:stk
    mov ax,data
    mov ds,ax
    mov ah,9
    mov dx,offset message
    int 21h
    mov ax,4c00h
    int 21h
main    endp
code    ends
end main
Аналог
Код:
.286
.model tiny
.code
org 100h
main:  mov ah,9
    mov dx,offset message
    int 21h
    ret
message db 'Hello World! No war and bomb! Let us live fiendly and learn assembler language. $'
end main
собирается bat-файлом
Код:
set filename=название_твоего_asm_файла_без_расширения
ml /AT /c %filename%.asm
link /T %filename%.obj,,,,,
если всё сделано правильно, то получится COM-файл, посмотри на его размер

Последний раз редактировалось Mikl___; 28.05.2019 в 09:48.
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