Перейти к содержанию

Подскажите


Vsoft

Рекомендуемые сообщения

Assembler Forever!

 

"Я провел эксперимент, написал программу (обычное окно с одной кнопкой в центре, которая закрывает его) на разных языках высокого уровня и после компиляции получил вот такие размеры этой самой программы:

C++ Builder 4 - 22 kb

Delphi 5 - 291 kb :whistle:

Delphi 5 + библиотека KOL - 26 kb

Ассемблер MASM - около 3 kb ;)

Так, что смотрите и делайте выводы, что лучше использовать."

Насчёт объектно ориентированного программирования, которое сейчас столь популярно, тут тоже не всё так радужно... если вовремя не понять меру, "проект рухнет сам под своей тяжестью". :hi:

 

Я за Ассемблер. Как ни крути, а наступают моменты когда я языками высокого уровня руки связаны. С Assembler такое невозможно в принципе! :) Я по душе идеалист, может быть поэтому я учу именно этот язык. Когда начинаешь немного понимать в этом прекрасном языке, то перед глазами открывается таинственная и величественная картина микропроцессорного "зазеркалья". Вот оно! Всё как на ладони. И ты хозяин всего этого!

С языками высокого уровня человек НИКОГДА не почувствует и не увидит этого. Всё скрыто пеленой непонятных и заранее непредвиденных преобразований компилятора. :P Что он там творит и с чем? А кто его знает... тут программист рулит косвенно.

 

Вот пример:

Ни один язык высокого уровня не может сделать того, что делает это чудо:

CSEG segment

assume cs:CSEG, es:CSEG, ds:CSEG, ss:CSEG

org 100h

Begin:

mov sp,offset Lab_1

mov ax,9090h

push ax

int 20h

Lab_1:

mov ah,9

mov dx,offset Mess

int 21h

int 20h

Mess db 'А все-таки она выводится!$'

CSEG ends

end Begin

 

В чём прикол? Эта микроскопическая прога заламывает руки всем отладчикам (конечно не SoftIce :D ), используя всего-то пару элементарных команд в нужной последовательности! Строка ВЫВОДИТСЯ на экран, хотя перед командой вывода на экран строки символов, ясно написано остановить выполнение и выйти... :D У отладчиков шок и глюк! ;)

 

"Первый вопрос, который задает себе человек, впервые услышавший об этом языке программирования, — а зачем он, собственно, нужен? Особенно теперь, когда все пишут на C/C++, Delphi или других языках высокого уровня? Ведь очень многое можно создать на С, но ни один язык, даже такой популярный, не может претендовать на то, чтобы на нем можно было написать действительно «все».

 

Итак, на ассемблере пишут:

 

все, что требует максимальной скорости выполнения: основные компоненты компьютерных игр, ядра операционных систем реального времени и просто критические участки программ;

все, что взаимодействует с внешними устройствами: драйверы, программы, работающие напрямую с портами, звуковыми и видеоплатами;

все, что использует полностью возможности процессора: ядра многозадачных операционных систем, DPMI-серверы и вообще любые программы, переводящие процессор в защищённый режим;

все, что полностью использует возможности операционной системы: вирусы и антивирусы, защиты от несанкционированного доступа, программы, обходящие эти защиты, и программы, защищающиеся от этих программ;

и многое другое.

 

Стоит познакомиться с ассемблером поближе, как оказывается, что многое из того, что обычно пишут на языках высокого уровня, лучше, проще и быстрее написать на ассемблере.

 

Как же так? — спросите вы, прочитав последний пункт. — Ведь всем известно, что ассемблер — неудобный язык, и писать на нем долго и сложно! Давайте перечислим мотивы, которые обычно выдвигаются в доказательство того, что ассемблер не нужен.

 

Говорят, что ассемблер трудно выучить. Любой язык программирования трудно выучить. Легко выучить С или Delphi после Паскаля, потому что они похожи. А попробуйте освоить Lisp, Forth или Prolog, и окажется, что ассемблер в действительности даже проще, чем любой совершенно незнакомый язык программирования.

 

Говорят, что программы на ассемблере трудно понять. Разумеется, на ассемблере легко написать неудобочитаемую программу... точно так же, как и на любом другом языке! Если вы знаете язык и если автор программы не старался ее запутать, то понять программу будет не сложнее, чем если бы она была написана на Бейсике.

 

Говорят, что программы на ассемблере трудно отлаживать. Программы на ассемблере легко отлаживать — опять же при условии, что вы знаете язык. Более того, знание ассемблера часто помогает отлаживать программы на других языках, потому что оно дает представление о том, как на самом деле функционирует компьютер и что происходит при выполнении команд языка высокого уровня.

 

Говорят, что современные компьютеры такие быстрые, что ассемблер больше не нужен. Каким бы быстрым ни был компьютер, пользователю всегда хочется большей скорости, иначе не наблюдалось бы постоянного спроса на еще более быстрые компьютеры. И самой быстрой программой на данном оборудовании всегда будет программа, написанная на ассемблере.

 

Говорят, что писать на ассемблере сложно. В этом есть доля правды. Очень часто авторы программ на ассемблере «изобретают велосипеды», программируя заново элементарные процедуры типа форматированного вывода на экран или генератора случайных чисел, в то время как программисты на С просто вызывают стандартные функции. Библиотеки таких функций существуют и для ассемблера, но они не стандартизованы и не распространяются вместе с компиляторами.

 

Говорят, что программы на ассемблере не переносятся. Действительно, в этом заключается самая сильная и самая слабая сторона ассемблера. С одной стороны, благодаря этой особенности программы на ассемблере используют возможности компьютера с наибольшей полнотой с другой стороны, эти же программы не будут работать на другом компьютере. Стоит заметить, что и другие языки часто не гарантируют переносимости — та же программа на С, написанная, например, под Windows 95, не скомпилируется ни на Macintosh, ни на SGI."

 

PS: Всем у кого есть вопросы по программированию и компам сюда: http://rusfaq.ru/

PSS: Внимание! Всё что взято в ковычки есть цитата!

Изменено пользователем Autopsy
Ссылка на комментарий
Поделиться на другие сайты

Создал прогу на VB - на форме кнопка, по которой форма закрывается.

Получилось 5 Кб :whistle: 1.rar

:hi:

Правильно, все завист от компилятора и количества функций в подключаемых библиотеках, не надо вообще их (библиотеки) подключать ради одной кнопки, лучше использовать то, что уже есть в Виндовс, например API. Или если использовать интерпретатор, код вообще будет масюсеньким (в размер листинга проги)...

Ссылка на комментарий
Поделиться на другие сайты

Большое спасибо за та что памогаете мне определится с языком ! Я купил всеже паскаль и начал с него затем думою делфи или С++ так как для меня С-это наилучший язык в моём понимании , настёт асамблера я думал очень долго ломал голову просто сходил сума поймите меня правильно мне всего 15 лет для меня даже паскаль представляет сложность ну точно с языком я ещё не опредилился посмотрю Visual Basic ну и сделаю вывод. Спасибо за советы друзья!

Ссылка на комментарий
Поделиться на другие сайты

Я буквально вчера сравнил две одинаковые проги одна с++ другая на ассамблере , улёт полный на с++ прога 50кб , а на асамблере 4кб ,в моих глазах асамблер поднялся ещё на одну ступень выше!

Ссылка на комментарий
Поделиться на другие сайты

Да я не думал что на с++ , считал что асамблер.

Есть ли антивирусы написанные на асамблере.

Изменено пользователем Vsoft
Ссылка на комментарий
Поделиться на другие сайты

Vsoft, извини, не заметил вопрос проавтора...

Я не помню цже автора, но как я выбираю книги по программированию: иду в магазин и начинаю их перечитывать - если мне понятно, что написано и как - тогда всё хорошо, если нет - то беру другую... Только сначала надо перебрать все книги, которые есть...

Ссылка на комментарий
Поделиться на другие сайты

СЫР ты совершенно прав ! Но видишь ли я живу в ростове недавно и книги дастаю с большим трудом а всё потому что я плохо знаю город.

Изменено пользователем Vsoft
Ссылка на комментарий
Поделиться на другие сайты

Да я не думал что на с++ , считал что асамблер.

Есть ли антивирусы написанные на асамблере.

Написать большую программу на ассемблере, это куруто, по сложности = выстроить 100-этажный дом из красного кирпича и вручную :). Перед таким разработчиком останется только "снять шляпу"...

Ссылка на комментарий
Поделиться на другие сайты

Ну... тут никто не спорит. Никто скальпелем землю не пашет... ему есть не менее достойное применение.

Тут, кстати, при рассмотрении этой проблемы можно заметить вот что: что делать если программа медленно работает, что делать если у програмиста не хватило мозгов написать быстродействующий и относительно небольшой код? Ответ нормального человека: дык написать программу по-человечески, вкласть в неё душу, идеи, изобретения, смекалку и нестандартные шаги! Ответ Microsoft-like купить комп мощьнее... ВСЁ! Куда проще?

Поэтому поделья Мicrosoft так ненасытно пожерают всё новые и новые гигабайты дискового пространства и времени CPU! Сей подход губителен и отвратителен.

 

В реализации "нестандартных шагов" Assembler как нельзя кстати.

 

Я пришел к такому выводу: само-то это С++ и Assembler. Насколько я понял, можно код на Ассемблере вставлять в код на С++, в ответственных, быстрых и ювелирных местах. C++ тоже принижать не стоит. Многие участки кода C++ работают не намного медленее Assembler! Хотя писать легче на C++. Но... некоторые места быстрее и проще писать на Assembler-e. В общем это IMHO идеальный вариант, C++ и Assembler, применяемые вместе и с умом.

 

Далее Паскаль похож на С, кто переучивался говорят очень легко. Не следует забывать что Паскаль это "игрушка, воспринятая слишком серьёзно", програмы _крайне_ медлительны (а чего вы хотите от игрушки?)... а Delphi его потомок... хотя тут я не разбирался в полной мере.

Кто знает, Delphi тормоз?

 

Сейчас я подготавливаю почву под C++, качаю и покупаю книжки.

Vsoft. Вот сцылка www.comprog.ru/c.html , тут много чего есть.

 

//////////

Vsoft, я хотел тебе поднят рейтинг, кот. сам забрал, а получилось наоборот, господа модераторы, верните на место! :)

Изменено пользователем Autopsy
  • Согласен 1
Ссылка на комментарий
Поделиться на другие сайты

А Вы бейсик знаете? Самый обычный. Если да, то сможете. Если нет - начните с него. А дальше - книжки читайте побольше - там много всего объяняется.

Ссылка на комментарий
Поделиться на другие сайты

Пожалуйста, войдите, чтобы комментировать

Вы сможете оставить комментарий после входа в



Войти
  • Похожий контент

    • failkey
      От failkey
      Не знаю как удалить Трояны. Остаются даже после восстановления винды (именно откат на несколько дней) . Касперский тоже не справляется
    • burbon
      От burbon
      Добрый день, просканировал систему через AVZ и увидел много красных сточек, однако в конце AVZ написал что, найдено вирусов 0, подозрений 0. И начались падения интернета, всё начало долго грузится и в играх пинг 200. Подскажите, что делать?
       
      Загружена база: сигнатуры - 297570, нейропрофили - 2, микропрограммы лечения - 56, база от 01.03.2016 12:37
      Загружены микропрограммы эвристики: 412
      Загружены микропрограммы ИПУ: 9
      Загружены цифровые подписи системных файлов: 790760
      Режим эвристического анализатора: Средний уровень эвристики
      Режим лечения: включено
      Версия Windows: 10.0.19045,  "Windows 10 Enterprise", дата инсталляции 11.12.2022 14:38:07 ; AVZ работает с правами администратора (+)
      Восстановление системы: включено
      1. Поиск RootKit и программ, перехватывающих функции API
      1.1 Поиск перехватчиков API, работающих в UserMode
       Анализ kernel32.dll, таблица экспорта найдена в секции .rdata
      Функция kernel32.dll:ReadConsoleInputExA (1133) перехвачена, метод ProcAddressHijack.GetProcAddress ->7580E3B4->75073800
      Функция kernel32.dll:ReadConsoleInputExW (1134) перехвачена, метод ProcAddressHijack.GetProcAddress ->7580E3E7->75073830
       Анализ ntdll.dll, таблица экспорта найдена в секции .text
      Функция ntdll.dll:NtCreateFile (296) перехвачена, метод ProcAddressHijack.GetProcAddress ->76F03550->7164F210
      Функция ntdll.dll:NtSetInformationFile (600) перехвачена, метод ProcAddressHijack.GetProcAddress ->76F03270->7164F370
      Функция ntdll.dll:NtSetValueKey (632) перехвачена, метод ProcAddressHijack.GetProcAddress ->76F03600->7164F3E0
      Функция ntdll.dll:ZwCreateFile (1841) перехвачена, метод ProcAddressHijack.GetProcAddress ->76F03550->7164F210
      Функция ntdll.dll:ZwSetInformationFile (2143) перехвачена, метод ProcAddressHijack.GetProcAddress ->76F03270->7164F370
      Функция ntdll.dll:ZwSetValueKey (2175) перехвачена, метод ProcAddressHijack.GetProcAddress ->76F03600->7164F3E0
       Анализ user32.dll, таблица экспорта найдена в секции .text
      Функция user32.dll:CallNextHookEx (1536) перехвачена, метод ProcAddressHijack.GetProcAddress ->7548BDE0->7164F100
      Функция user32.dll:SetWindowsHookExW (2399) перехвачена, метод ProcAddressHijack.GetProcAddress ->75490F70->7164F450
      Функция user32.dll:Wow64Transition (1504) перехвачена, метод CodeHijack (метод не определен)
       Анализ advapi32.dll, таблица экспорта найдена в секции .text
      Функция advapi32.dll:CveEventWrite (1234) перехвачена, метод ProcAddressHijack.GetProcAddress ->75E78072->75076200
      Функция advapi32.dll:I_ScRegisterPreshutdownRestart (1387) перехвачена, метод ProcAddressHijack.GetProcAddress ->75E78F99->75EDE320
       Анализ ws2_32.dll, таблица экспорта найдена в секции .text
       Анализ wininet.dll, таблица экспорта найдена в секции .text
       Анализ rasapi32.dll, таблица экспорта найдена в секции .text
       Анализ urlmon.dll, таблица экспорта найдена в секции .text
       Анализ netapi32.dll, таблица экспорта найдена в секции .text
      Функция netapi32.dll:NetFreeAadJoinInformation (130) перехвачена, метод ProcAddressHijack.GetProcAddress ->73CFD14A->652EDE90
      Функция netapi32.dll:NetGetAadJoinInformation (131) перехвачена, метод ProcAddressHijack.GetProcAddress ->73CFD179->652EE210
      1.4 Поиск маскировки процессов и драйверов
       Проверка не производится, так как не установлен драйвер мониторинга AVZPM
      2. Проверка памяти
       Количество найденных процессов: 11
       Количество загруженных модулей: 247
      Проверка памяти завершена
      3. Сканирование дисков
      Прямое чтение C:\Users\Вася\AppData\Local\Temp\1807cacf-db3c-462b-8317-19e7b48a6549.tmp
      Прямое чтение C:\Users\Вася\AppData\Local\Temp\429db0e8-0600-45ab-a18b-8c82e45cdd1a.tmp
      Прямое чтение C:\Users\Вася\AppData\Local\Temp\6b5dd892-d3b3-4a50-ac70-4bcaee0c85a0.tmp
      Прямое чтение C:\Users\Вася\AppData\Local\Temp\841b9781-9b96-4205-872a-a33139bb86fc.tmp
      Прямое чтение C:\Users\Вася\AppData\Local\Temp\95822c3b-9fa1-4fcd-ad01-ae8455af46a2.tmp
      Прямое чтение C:\Users\Вася\AppData\Local\Temp\c5858088-f9a7-40f8-a4e7-93894ce42607.tmp
      Прямое чтение C:\Users\Вася\AppData\Local\Temp\f70ce670-2204-4b50-9897-1cdba3afa2ce.tmp
      4. Проверка Winsock Layered Service Provider (SPI/LSP)
       Настройки LSP проверены. Ошибок не обнаружено
      5. Поиск перехватчиков событий клавиатуры/мыши/окон (Keylogger, троянские DLL)
      6. Поиск открытых портов TCP/UDP, используемых вредоносными программами
       Проверка отключена пользователем
      7. Эвристичеcкая проверка системы
      Проверка завершена
      8. Поиск потенциальных уязвимостей
      >> Службы: разрешена потенциально опасная служба TermService (Службы удаленных рабочих столов)
      >> Службы: разрешена потенциально опасная служба SSDPSRV (Обнаружение SSDP)
      >> Службы: разрешена потенциально опасная служба Schedule (Планировщик задач)
      > Службы: обратите внимание - набор применяемых на ПК служб зависит от области применения ПК (домашний, ПК в ЛВС компании ...)!
      >> Безопасность: разрешен автозапуск программ с CDROM
      >> Безопасность: разрешен административный доступ к локальным дискам (C$, D$ ...)
      >> Безопасность: к ПК разрешен доступ анонимного пользователя
      >> Безопасность: Разрешена отправка приглашений удаленному помощнику
      Проверка завершена
      9. Мастер поиска и устранения проблем
       >>  Таймаут завершения служб находится за пределами допустимых значений
       >>  Разрешен автозапуск с HDD
       >>  Разрешен автозапуск с сетевых дисков
       >>  Разрешен автозапуск со сменных носителей
      Проверка завершена
      Просканировано файлов: 116562, извлечено из архивов: 26001, найдено вредоносных программ 0, подозрений - 0
      Сканирование завершено в 09.10.2024 08:36:47
      Сканирование длилось 00:12:19
       
      на вирусы в ccleaner и через windows проверил - ничего не показало
       
      ничего подозрительного не скачивал. Все файлы проверял через VirusTotal
    • gleb.botov
      От gleb.botov
      Подскажите пожалуйста, что за новый шифровальщик - шифрует файлы и добавляет расширение .NEEDTOPAYTOMYHORSE
      зашифровал почти все на диске "С", папки с особыми названиями (!_хххххх) не тронул.
      Ни один расшифровщик с сайта не смог помочь.
      Помогите пожалуйста!
      Cпасибо
    • Руслан098
      От Руслан098
      Вирус. Который сильно замедляет компьютер. При этом сворачивает папку ProgramData, также. Вворачивает браузер и сильно упал ресуркомпа!
      помогите пожалуйста.
      Cleaner не помогает
    • avensis
      От avensis
      Добрый день!
      Так получилось, что в наследство досталась также поддержка работоспособности и актуальности антивирусной защиты. Прямо скажу, опыта во всем очень мало, не все понятно, возникли вопросы.
      На виртуальной машине установлен KSC 12.2.0.4376, на клиентах (в основном Windows 7 x32 c 4Gb, это отдельная боль...) KES 11.5.0.590 и Агент администрирования KSC 11.0.0.1131. Для серверов чуть другие версии, пока актуальные...
      В общем уже понял, что поддержка версий KSC и KES уже закончилась, базы обновились последний раз 12.2023, у некоторых ПК похоже не обновлялись давно...
      Просьба проконсультировать, посоветовать....
      Сейчас думаю самое главное обновить версии ПО на клиентах, обновлять KSC не готов, т.к. кроме непонимания вопроса это еще тянет за собой обновление ОС для KSC (и скорее создание новой ВРМ для этой цели)
      Пока столкнулся с следующими трудностями:
      - не могу найти версию KES 12.1.0.506 aes56, где искать... (т.к. лицензирована для гос.организаций). В KSC для обновления доступна последняя версия 12.3.0.493, правда требует обновить плагин (последний 11.6....) 
      Если же обновлю плагин по идее ничего же не должно закриветь...даже если версия KES будет ниже версии плагина...Верно?
      - нигде не нашел информации по соответствию версий KES и Агента на клиентских машинах. Т.е. если KES будет версии 12, то и Агент должен быть обновлен до 12? Такая логика? И также откуда его брать...
      - как правильно обновлять в моем случае? Если правильно понимаю, сначала обновлять Агента, потом KES, буду тренироваться на какой-нибудь одной машине. Это если будет отдельный автономный установщик так понял.
      А если устанавливать с KSC 12.3.0.493, то правильно понимаю, что сразу будут обновляться и Агент и KES? Читал в данном случае в инстал.пакете все вместе....
      - когда в перспективе будет обновляться версия KSC, то принципиально ли, что д.б.на базе ОС Windows Server или же достаточно на базе например Windows 10 Pro?
       
      Извиняюсь за некоторую сумбурность... и заранее Спасибо за консультацию!
×
×
  • Создать...