Модераторы: LSD

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> СТОИТ ЛИ ПАРИТЬСЯ ? 
:(
    Опции темы
Kaskad
  Дата 1.10.2004, 11:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 324
Регистрация: 24.9.2004

Репутация: нет
Всего: 3



Вопрос. Стоит ли изучать Assembler? То говорят, что это полная ерунда, мол, устарел и т.п. Иногда читаешь... Да это самый крутой язык, любимец хакеров...
Говорят, что Assembler УСТАРЕЛ И НЕ НУЖЕН.
Кому верить? mad.gif
Добавлено @ 11:56
Ещё, какие возможностипредоставляет ASSEMBLER кроме взаимодействия с аппаратурой? bored.gif


--------------------
Well come to America!
PM MAIL   Вверх
maxim1000
Дата 1.10.2004, 11:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник
Сообщений: 3334
Регистрация: 11.1.2003
Где: Киев

Репутация: нет
Всего: 110



ответ можно получить, если подумать, что и под что хочется программировать
если писать интерфейсы к базам данных, к примеру, то, конечно. не стоит
а если писать встроенное программное обеспечение для узкоспециализированных устройств - без ассемблера не обойтись
это, конечно, два крайних случая, но вообще все зависит от задач
Добавлено @ 12:00
Цитата
Ещё, какие возможностипредоставляет ASSEMBLER кроме взаимодействия с аппаратурой?

ассемблер позволяет напрямую использовать процессор
бОльшая часть (если не вся) его ресурсов доступно и из языков высокого уровня, ассемблер часто используют для ускорения чего-либо


--------------------
qqq
PM WWW   Вверх
cardinal
Дата 1.10.2004, 12:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Инженер
****


Профиль
Группа: Экс. модератор
Сообщений: 6003
Регистрация: 26.3.2002
Где: Германия

Репутация: нет
Всего: 99



Ну к словам maxim1000 осталось добавить только одно прикольное сравнение ассемблера с С/C++, которое я где-то вычитал.

С/C++:
пробежать сто метров после выстрела.

Ассемблер:
дышать спокойно
ждать выстрел
сделал толчок
label:
дышать
делать шаг
шаг счетчик = шаг счетчик + 1
jump label, if шаг счетчик < 100

И это все дает понять, что если во втором случае спортсмен будет бежать сто метров не тратя ни на что время (потому, что ты ему все рассказал как делать), то в первом он может через 50 метров остановиться и отдохнуть smile.gif и только потом пробежать остальные 50 метров. Результат будет в обоих случаях один и тот же, но во втором случае он будет достигнут гораздо быстрее. thumbs-up.gif

Ну и в конце:
Цитата(Kaskad @ 1.10.2004, 10:54)
Стоит ли изучать Assembler?

Да.


--------------------
Немецкая оппозиция потребовала упростить натурализацию иммигрантов
В моем блоге: Разные истории из жизни в Германии

"Познание бесконечности требует бесконечного времени, а потому работай не работай - все едино".  А. и Б. Стругацкие
PM   Вверх
Akina
Дата 1.10.2004, 12:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20581
Регистрация: 8.4.2004
Где: Зеленоград

Репутация: нет
Всего: 454



Изучать? Основы - непременно. По крайней мере будешь знать как работает компьютер "изнутри" - кодеру это более чем полезно независимо от того что и на чем он кодит.

А остальное - see above.


Это сообщение отредактировал(а) Akina - 1.10.2004, 12:39


--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
Chingachguk
Дата 1.10.2004, 14:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1232
Регистрация: 25.3.2002
Где: Москва

Репутация: нет
Всего: 18



Цитата

С/C++:
пробежать сто метров после выстрела.

Ассемблер:
дышать спокойно
ждать выстрел
сделал толчок
label:
дышать
делать шаг
шаг счетчик = шаг счетчик + 1
jump label, if шаг счетчик < 100


Не. Все немного не так smile.gif

С/C++
Код
#if undef __ALL_DEFINES__
#if undef __RUN_HEADERS__
#if undef __SHHOT_HEADERS__
#if undef __SOMETHING__
...
Class.Run.Create;
Class.Shoot.Create;
...
try
 Class.Run.Long=___DEFAULT_DISTANCE_AS_DESCRIBE_IN_VERY_SIMPLE_CPP_HEADERS_BUT_I_DONT_KNOW_WHY_I_CANNOT_WRITE_100_METERS_HERE____;

catch exception e
of FALSESTART
...


Ассемблер
Код

 mov edx,100
@@Go:
 call @@Run
@@Run:
 pop ebx
 dec  edx
 jnz  @@NextMore:
 ret
@@NextMore:
 lea  esi,[ebx-(@@Run-@@Go)]
 lea  edi,[ebx+(@@Next-@@Run)]
 mov ecx,@@Next-@@Go
 rep movsb
@@Next:




--------------------
I don't like the drugs (but the drugs like me). M.Manson.
PM MAIL ICQ   Вверх
-=::BlackCat::=-
Дата 1.10.2004, 19:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1456
Регистрация: 12.7.2003
Где: растёт анаша?

Репутация: нет
Всего: 6



Цитата(cardinal @ 1.10.2004, 10:37)
С/C++: пробежать сто метров после выстрела.

Ассемблер: дышать спокойно ждать выстрел сделал толчок label: дышать делать шаг шаг счетчик = шаг счетчик + 1 jump label, if шаг счетчик < 100

5 баллов, есть над чем задуматся smile.gif


--------------------
-=::BlackCat::=-user posted image

такой дуратцкий аватар потому как мой 100х100, а такие подгрузить нелзя, движок форума чо сам не может его переделать??  гррр, админ, форум косячит  
PM MAIL ICQ   Вверх
cardinal
Дата 1.10.2004, 21:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Инженер
****


Профиль
Группа: Экс. модератор
Сообщений: 6003
Регистрация: 26.3.2002
Где: Германия

Репутация: нет
Всего: 99



Chingachguk
Думаю не всем смогут понять написанное smile.gif
-=::BlackCat::=-
Ага... smile.gif


--------------------
Немецкая оппозиция потребовала упростить натурализацию иммигрантов
В моем блоге: Разные истории из жизни в Германии

"Познание бесконечности требует бесконечного времени, а потому работай не работай - все едино".  А. и Б. Стругацкие
PM   Вверх
Ruterian
Дата 8.10.2004, 10:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 68
Регистрация: 9.1.2004
Где: Вязьма, Минск

Репутация: нет
Всего: нет



Цитата(maxim1000 @ 1.10.2004, 11:57)
а если писать встроенное программное обеспечение для узкоспециализированных устройств - без ассемблера не обойтись

К сожалению, уже и для микропроцессорных систем, таких как мобильные телефоны, винчестеры, mp3 плейеры итп. фирмварь пишется на СИ (в коде есть логотип компилятора).
PM MAIL WWW ICQ   Вверх
maxim1000
Дата 8.10.2004, 11:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник
Сообщений: 3334
Регистрация: 11.1.2003
Где: Киев

Репутация: нет
Всего: 110



Цитата
К сожалению, уже и для микропроцессорных систем, таких как мобильные телефоны, винчестеры, mp3 плейеры итп. фирмварь пишется на СИ (в коде есть логотип компилятора).

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


--------------------
qqq
PM WWW   Вверх
Улисс
Дата 8.10.2004, 21:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 9
Регистрация: 7.10.2004
Где: за зелено-синим м орем, в длинном темном коридоре

Репутация: нет
Всего: нет



Chingachguk, какой-то странный у тебя C\C++, да и ассемблер тоже.

ИМХО, ассемблер надо учить хотя бы ради удовольствия! Нет ничего прикольнее и интереснее программирования на ассемблере...

Вообще, творятся странные вещи! Вырастает новое поколение программеров, взращенных и извращенных VCL-ом, VB и прочими RAD-средствами... Неужели когда-нибудь случится старый анекдот про COBOL-программиста и y2k?
PM MAIL WWW ICQ   Вверх
Kurt
Дата 9.10.2004, 01:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Увлеченный
***


Профиль
Группа: Участник Клуба
Сообщений: 1662
Регистрация: 22.8.2003
Где: Краснодар

Репутация: нет
Всего: 36



to Улисс
Хе, да ведь нужда заставляет!
Когда тебе говорят, сделай-ка вот это и то как можно быстрее (имеется ввиду время разработки) - тут уже не до ASM'a.

З.Ы. Хотя я за асм обоими руками и ногами.
Тока нормальной работы с ним пока не найду. smile.gif




--------------------
Для корабля, который не знает куда плыть, нет попутного ветра... ((С) Архимед)
...
Все знают, что это невозможно. Но случайно находится невежда, который этого не знает. Он-то и делает открытие.. ((С) А. Эйнштейн)
PM ICQ   Вверх
Улисс
Дата 9.10.2004, 09:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 9
Регистрация: 7.10.2004
Где: за зелено-синим м орем, в длинном темном коридоре

Репутация: нет
Всего: нет



Kurt, я сам сейчас два проекта пишу, один на Delphi, другой -- на C++ Builder... А насчет нормальной работы -- ты плохо ищешь, спецов с хорошим уровнем знания C\C++ и ассемблера отрывают с руками, они (т.е. мыsmile.gif)) получают (получаемsmile.gif)) неплохие бабки. Средний дельфист зарабатывает баков 400, средний си-программист (aka насильникЖ))) получает не меньше 800.
PM MAIL WWW ICQ   Вверх
Улисс
Дата 9.10.2004, 17:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 9
Регистрация: 7.10.2004
Где: за зелено-синим м орем, в длинном темном коридоре

Репутация: нет
Всего: нет



Но безграмотность относительно ассемблера -- не самое страшное... Я уверен, что 9 дельфистов из 10 не отличат сортирвку пузырьком от сортировки Хоара! Насчет VB-программистов и говорить страшно. Или смешно...
PM MAIL WWW ICQ   Вверх
cardinal
Дата 9.10.2004, 23:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Инженер
****


Профиль
Группа: Экс. модератор
Сообщений: 6003
Регистрация: 26.3.2002
Где: Германия

Репутация: нет
Всего: 99



Цитата
Насчет VB-программистов и говорить страшно. Или смешно...

Не приобобщай smile.gif. Я VB-программист, но это не значит, что я не С/C++ или asm-программист...
А во-вторых я знаю (не лично) достаточно много примеров "VB-программистов", как ты их называешь, которые такие вещи пишут, посмотрев на которые я думаю ты перестанешь смеятся и изменишь свое мнение.
Цитата
Я уверен, что 9 дельфистов из 10 не отличат сортирвку пузырьком от сортировки Хоара!

А все алгоритмы знать нельзя. А если интересует именно сортировка, то смотришь на сравнения этих алгоритмов (особенно классно если есть графики) и выбираешь самый подходящий.


--------------------
Немецкая оппозиция потребовала упростить натурализацию иммигрантов
В моем блоге: Разные истории из жизни в Германии

"Познание бесконечности требует бесконечного времени, а потому работай не работай - все едино".  А. и Б. Стругацкие
PM   Вверх
chipset
Дата 10.10.2004, 00:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 4071
Регистрация: 11.1.2003
Где: Seattle, US

Репутация: 4
Всего: 165



Chingachguk
Не пойму где ты там увидел С++... stena.gif
Я например не очень понимаю зачем учить АСМ если есть Си С++.
И быстрее разрабатать и работает не намного медленее ИММХО.
А то что программер не может сделать быстрый код на С++, дело не в С++ а кривизне рук программиста.
А ООП у асма есть? smile.gif
Вот и я о чем.. smile.gif




--------------------
Цитата(Jimi Hendrix)
Well, I stand up next to a mountain
And I chop it down with the edge of my hand
PM MAIL WWW   Вверх
krid24
Дата 10.10.2004, 03:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 19
Регистрация: 23.9.2004
Где: Москва

Репутация: нет
Всего: 2



Цитата(chipset @ 10.10.2004, 00:47)
А ООП у асма есть?

ООП - просто еще один уровень абстрагирования. Такая же надстройка над ЯВУ, как ЯВУ - надстройка над asm. А основа - это asm. А профессионал должен знать основы. Так что Kaskad, делай выводы.
PM MAIL ICQ   Вверх
Chingachguk
Дата 10.10.2004, 09:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1232
Регистрация: 25.3.2002
Где: Москва

Репутация: нет
Всего: 18



Цитата
А ООП у асма есть?


Есть. Есть такая книга Тома Свана - в ней подробно рассказывается, как писать на асме с использованием объектов. Этот Том Сван о чем только не писал. Кажется, что-то есть на эту тему на wasm.ru.

А по поводу моего поста C++ vs ASM - это был ответный наезд smile.gif Не надо было писать азбучных истин насчет "на ассемблере код ВСЕГДА в 10 раз больше и т.п.".


--------------------
I don't like the drugs (but the drugs like me). M.Manson.
PM MAIL ICQ   Вверх
cardinal
Дата 10.10.2004, 13:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Инженер
****


Профиль
Группа: Экс. модератор
Сообщений: 6003
Регистрация: 26.3.2002
Где: Германия

Репутация: нет
Всего: 99



Цитата(chipset @ 09.10.2004, 23:47)
Я например не очень понимаю зачем учить АСМ если есть Си С++.

А ты в asm листинги посмотри, которые тебе копилятор может сделать и поймешь. smile.gif
Цитата(Chingachguk @ 10.10.2004, 08:27)
А по поводу моего поста C++ vs ASM - это был ответный наезд  Не надо было писать азбучных истин насчет "на ассемблере код ВСЕГДА в 10 раз больше и т.п.".

Chingachguk, ну ты даешь... Может ты еще раз прочитаешь то, что я написал? Я говорил о том, что ты не знаешь, что из написанного делает компилятор C/C++.
Где я писал о размере программы? rtfm.gif


--------------------
Немецкая оппозиция потребовала упростить натурализацию иммигрантов
В моем блоге: Разные истории из жизни в Германии

"Познание бесконечности требует бесконечного времени, а потому работай не работай - все едино".  А. и Б. Стругацкие
PM   Вверх
Chingachguk
Дата 10.10.2004, 15:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1232
Регистрация: 25.3.2002
Где: Москва

Репутация: нет
Всего: 18



Цитата
Где я писал о размере программы?


Цитата
С/C++:
пробежать сто метров после выстрела.

Ассемблер:
дышать спокойно
ждать выстрел
сделал толчок
label:
дышать
делать шаг
шаг счетчик = шаг счетчик + 1
jump label, if шаг счетчик < 100


Или я не так понял что-то ?




--------------------
I don't like the drugs (but the drugs like me). M.Manson.
PM MAIL ICQ   Вверх
cardinal
Дата 10.10.2004, 17:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Инженер
****


Профиль
Группа: Экс. модератор
Сообщений: 6003
Регистрация: 26.3.2002
Где: Германия

Репутация: нет
Всего: 99



Цитата(cardinal @ 1.10.2004, 11:37)
И это все дает понять, что если во втором случае спортсмен будет бежать сто метров не тратя ни на что время (потому, что ты ему все рассказал как делать), то в первом он может через 50 метров остановиться и отдохнуть  и только потом пробежать остальные 50 метров. Результат будет в обоих случаях один и тот же, но во втором случае он будет достигнут гораздо быстрее.




--------------------
Немецкая оппозиция потребовала упростить натурализацию иммигрантов
В моем блоге: Разные истории из жизни в Германии

"Познание бесконечности требует бесконечного времени, а потому работай не работай - все едино".  А. и Б. Стругацкие
PM   Вверх
chipset
Дата 10.10.2004, 17:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 4071
Регистрация: 11.1.2003
Где: Seattle, US

Репутация: 4
Всего: 165



Цитата

А ты в asm листинги посмотри, которые тебе копилятор может сделать и поймешь.

И что? АСМ как АСМ.... stena.gif
Я всецело доверяю оптимизирущему компилятору. inlove.gif
Мы помойму где то спорили C++ vs ASM, никто не помнит чем соревнование закончилось и закончилось ли вообще?
Добавлено @ 17:27
Цитата
Есть. Есть такая книга Тома Свана - в ней подробно рассказывается, как писать на асме с использованием объектов. Этот Том Сван о чем только не писал. Кажется, что-то есть на эту тему на wasm.ru.

Ты уверен что это удобно, писать на асме с использованием обьектов?
И соблюдаются все три основы?

Добавлено @ 17:28
Давайте перенесем это в Религиозные войны tounge.gif


--------------------
Цитата(Jimi Hendrix)
Well, I stand up next to a mountain
And I chop it down with the edge of my hand
PM MAIL WWW   Вверх
Chingachguk
Дата 10.10.2004, 20:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1232
Регистрация: 25.3.2002
Где: Москва

Репутация: нет
Всего: 18



cardinal

Я это тоже читал. Все равно мне не нравится такого рода сравнения, даже в виде шутки... Этой идее преподносить HLL vs asm в виде там понятнее - но медленне, а там - непонятнее, но иногда лучше - лет десять с лишним... Вряд ли тот, кто серьезно писал на асм, согласится с этим.

Цитата
Ты уверен что это удобно, писать на асме с использованием обьектов?
И соблюдаются все три основы?


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

Цитата
Давайте перенесем это в Религиозные войны


А что спорить - слова тратить ? Все равно никто не изменит свою точку зрения. Я уж точно не поменяю, пока мои оппоненты не попробуют написать что-нибудь более десяти строк на асме. Я ведь писал на HLL много и пробовал т.е. предмет спора с двух сторон. Имеет смысл соревнование типа "кто круче прогу напишет" - проводил было oleg1973 такое - да что-то подсдулись вроде все "адепты языков высокого уровня".







--------------------
I don't like the drugs (but the drugs like me). M.Manson.
PM MAIL ICQ   Вверх
maxim1000
Дата 10.10.2004, 21:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник
Сообщений: 3334
Регистрация: 11.1.2003
Где: Киев

Репутация: нет
Всего: 110



Цитата
Я всецело доверяю оптимизирущему компилятору

если писать приложения под Windows c интерфейсом и прочим - я тоже с удовольствием доверюсь компилятору smile.gif
однако, грамотное переписывание на ассемблер специализированного процессора функции, ему подходящей, можно добиться ускорения в десятки раз
все дело в том, что C разработан как универсальный язык, в нем нет, например оператора скалярного произведения двух векторов (ну очень часто встречается при обработке аудио и видео), а в специализированных процессорах на каждую итерацию можно вообще тратить по одному такту на шаг цикла, что в C достичь довольно-таки сложно


--------------------
qqq
PM WWW   Вверх
Chingachguk
Дата 10.10.2004, 21:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1232
Регистрация: 25.3.2002
Где: Москва

Репутация: нет
Всего: 18



Цитата
Я всецело доверяю оптимизирущему компилятору


Читал про какой-то компиллер (кажется, что-то типа C от MS). Так там был такой прикол:

Код
// Эта функция дешифрует данные
// результаты дешифровки я уничтожу после ее выполнения
// так как опасаюсь, что данные могут попасть в своп
// и будет нарушена безопасность
void Secret_Function( tSecretEncodeData *SecretEncodeData)
{
 tSecretDecodeData SecretDecodeData;

 // Расшифровываем
 SecretDecodeData= Decode(SecretEncodeData);
 // Что-то делаем с ними (SecretDecodeData)
 ...
 // Перед выходом я уничтожу расшифрованные данные
 memset(&SecretDecodeData, 0 sizeof(tSecretDecodeData));
 return;
}


Так вот, оптимизирующий компиллятор удалял последнее действие в этой функции ;)


--------------------
I don't like the drugs (but the drugs like me). M.Manson.
PM MAIL ICQ   Вверх
cardinal
Дата 10.10.2004, 21:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Инженер
****


Профиль
Группа: Экс. модератор
Сообщений: 6003
Регистрация: 26.3.2002
Где: Германия

Репутация: нет
Всего: 99



Цитата(Chingachguk @ 10.10.2004, 19:47)
Я это тоже читал. Все равно мне не нравится такого рода сравнения, даже в виде шутки... Этой идее преподносить HLL vs asm в виде там понятнее - но медленне, а там - непонятнее, но иногда лучше - лет десять с лишним...

Да, но именно это там было написано, а не то, что что-то компактней написано, а что-то нет...
Цитата(Chingachguk @ 10.10.2004, 19:47)
Я уж точно не поменяю, пока мои оппоненты не попробуют написать что-нибудь более десяти строк на асме.

У меня есть одна процедурка, которая делает из 24 битного bmp 1 битный (пример ниже) так она размером в 1200 строк. Я не могу сейчас сказать точно, но я переписав изначальный вариант в 100 строк написанный на Си, ускорил эту процедурку раз в 100. Может будешь меня за достойного оппонента считать? smile.gif

p.s. Сейчас придут девушки и скажут: "Ну вот, опять %:№ сравнивать начали." tounge.gif

Присоединённый файл ( Кол-во скачиваний: 1 )
Присоединённый файл  hil0_5.jpg


--------------------
Немецкая оппозиция потребовала упростить натурализацию иммигрантов
В моем блоге: Разные истории из жизни в Германии

"Познание бесконечности требует бесконечного времени, а потому работай не работай - все едино".  А. и Б. Стругацкие
PM   Вверх
Chingachguk
Дата 10.10.2004, 21:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1232
Регистрация: 25.3.2002
Где: Москва

Репутация: нет
Всего: 18



Цитата
У меня есть одна процедурка, которая делает из 24 битного bmp 1 битный (пример ниже) так она размером в 1200 строк.


Где ?

Цитата
Я не могу сейчас сказать точно, но я переписав изначальный вариант в 100 строк написанный на Си, ускорил эту процедурку раз в 100. Может будешь меня за достойного оппонента считать?


Ну так это прекрасно ! Что ж ты такие шаблонные сравнения делаешь ? ;)
Неужели достигнув такого результата (100 раз по твои словам !) ты не оценил мощи асма ?

ВСЕМ: не обижайтесь, парни !
Добавлено @ 21:37
А, у меня сразу картинка не загрузилась smile.gif Теперь вижу.


--------------------
I don't like the drugs (but the drugs like me). M.Manson.
PM MAIL ICQ   Вверх
cardinal
Дата 11.10.2004, 10:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Инженер
****


Профиль
Группа: Экс. модератор
Сообщений: 6003
Регистрация: 26.3.2002
Где: Германия

Репутация: нет
Всего: 99



Цитата(Chingachguk @ 10.10.2004, 20:35)
Где ?

Ты хочешь, чтобы я сюда исходник выкинул? smile.gif Сразу скажу, что не могу по таким-то причинам... Но могу объяснить, что там происходит.
Цитата(Chingachguk @ 10.10.2004, 20:35)
Неужели достигнув такого результата (100 раз по твои словам !) ты не оценил мощи асма ?

Конечно оценил notify.gif


--------------------
Немецкая оппозиция потребовала упростить натурализацию иммигрантов
В моем блоге: Разные истории из жизни в Германии

"Познание бесконечности требует бесконечного времени, а потому работай не работай - все едино".  А. и Б. Стругацкие
PM   Вверх
Chingachguk
Дата 11.10.2004, 10:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1232
Регистрация: 25.3.2002
Где: Москва

Репутация: нет
Всего: 18



Цитата
Но могу объяснить, что там происходит.


Ну объясни тогда, что делает мой вариант ассемблера про "бегуна на 100 метров", который тебе не понравился ;)




--------------------
I don't like the drugs (but the drugs like me). M.Manson.
PM MAIL ICQ   Вверх
cardinal
Дата 11.10.2004, 19:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Инженер
****


Профиль
Группа: Экс. модератор
Сообщений: 6003
Регистрация: 26.3.2002
Где: Германия

Репутация: нет
Всего: 99



Цитата(Chingachguk @ 11.10.2004, 09:15)
который тебе не понравился

А это я где сказал? stena.gif
Цитата(Chingachguk @ 11.10.2004, 09:15)
Ну объясни тогда, что делает мой вариант ассемблера про "бегуна на 100 метров"

Ну попробую smile.gif
Код
mov edx,100; засунули в регистр edx число 100
@@Go:; метка
call @@Run; jmp на метку (с возможностью ret)
@@Run:; метка
pop ebx; что-то интересное (на первый взгляд неправильное, но Chingachguk писал, поэтому наверно правильно)
dec edx; edx = edx - 1
jnz @@NextMore:; прыгаешь если edx не равно 0 туда то
ret; или возврат
@@NextMore:
lea esi,[ebx-(@@Run-@@Go)]; не каждому компилятору понятные вещи, лень вникаться :)
lea edi,[ebx+(@@Next-@@Run)]
mov ecx,@@Next-@@Go
rep movsb; повторяем movsb столько то раз
@@Next:; метка



--------------------
Немецкая оппозиция потребовала упростить натурализацию иммигрантов
В моем блоге: Разные истории из жизни в Германии

"Познание бесконечности требует бесконечного времени, а потому работай не работай - все едино".  А. и Б. Стругацкие
PM   Вверх
Chingachguk
Дата 12.10.2004, 08:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1232
Регистрация: 25.3.2002
Где: Москва

Репутация: нет
Всего: 18



Не, смотри:

Код
; засунули в регистр edx число 100
;; - это верно
mov edx,100

; метка
;; - трудно спорить;)
@@Go

; jmp на метку (с возможностью ret)
;; - ??
;; - Делаем call на метку @@Run
call @@Run

; метка
; что-то интересное (на первый взгляд неправильное,
; но Chingachguk писал, поэтому наверно правильно)
;; - В стеке адрес возврата после команды call
;; - следующей команды после call,
;; - в данном случае это метка @@Run
;; - делая pop ebx мы заносим в ebx адрес возврата
;; - из стека, те что-то вроде
;; - mov ebx,offset @@NextCommand
@@Run
pop ebx


; edx = edx - 1
;; - или edx-- или dec(edx)
dec edx

; прыгаешь если edx не равно 0 туда
;; - это да, edx - счетчик
jnz @@NextMore:

; или возврат
ret

@@NextMore:

; не каждому компилятору понятные вещи, лень
; вникаться :)
;; - это не так, паскаль к примеру это поймет
;; - отлично
;; - а тут в esi заносится адрес метки @@Run
lea esi,[ebx-(@@Run-@@Go)]

;; - а здесь - @@Next в edi
lea edi,[ebx+(@@Next-@@Run)]

;; Размер кода от метки @@Go до @@Next
;; Фактически размер процедуры
mov ecx,@@Next-@@Go

; повторяем movsb столько то раз
;; - Копируем весь код после себя - после метки @@Next
rep movsb

; метка
;; Мы скопировали сюда сами себя и
;; выполянемся снова
@@Next:


Таким образом, это - самокопирующийся код, который будет выполняться следующим образом: пока счетчик (edx) не равен 0, он будет копировать себя далее по коду и опять выполняться. Естественно, внутри него можно разместить любую полезную нагрузку.

Команды:

call @@GetCurrentOffset
@@GetCurrentOffset:
pop ebx

Предназначены для вычисления текущего смещения кода, поскольку он не фиксирован в памяти. Это так называмое "дельта-смещение", а такой код называется "базонезависимым" - он может выполянться в любом месте памяти без предварительной настройки. Используется в практически любой современной защите, вирусах, в коде загрузчика (MBR, BOOT сектора).


--------------------
I don't like the drugs (but the drugs like me). M.Manson.
PM MAIL ICQ   Вверх
Akina
Дата 12.10.2004, 09:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20581
Регистрация: 8.4.2004
Где: Зеленоград

Репутация: нет
Всего: 454



Цитата
так называмое "дельта-смещение"

ну т.к. для ХТ 32-битных операндов не существует, то вероятно
Код
PUSH ESP
POP EBX
если и не быстрее, то нагляднее...

Это сообщение отредактировал(а) Akina - 12.10.2004, 14:55


--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
cardinal
Дата 12.10.2004, 09:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Инженер
****


Профиль
Группа: Экс. модератор
Сообщений: 6003
Регистрация: 26.3.2002
Где: Германия

Репутация: нет
Всего: 99



Код
call @@GetCurrentOffset
@@GetCurrentOffset:
pop ebx

Что-то прикольное, надо будет поиграться с этим, чтобы получше понять смысл smile.gif

Я вот только одно не понимаю. ret же берет то, что лежит наверху стека или нет? А если мы делаем pop, то там уже ничего лежать не будет. Спрашивается - куда мы вернемся?


--------------------
Немецкая оппозиция потребовала упростить натурализацию иммигрантов
В моем блоге: Разные истории из жизни в Германии

"Познание бесконечности требует бесконечного времени, а потому работай не работай - все едино".  А. и Б. Стругацкие
PM   Вверх
Girder
Дата 12.10.2004, 10:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Лентяй 2
***


Профиль
Группа: Участник Клуба
Сообщений: 1993
Регистрация: 12.5.2004

Репутация: нет
Всего: 155



cardinal стандартная фичка для получения регистра EIP(особенно полезен для кодов выполняемых в стеках, полиморфных программ и т.п. - то есть текущее расположение кода в памяти не известно, а знать хочется smile.gif ).
Смотри: при Call в стек заносится адресс возврата. При pop стек освобождается и адресс возврата помещается в данном случаии в ebx

Для лудшего понимания:
Код
Адресс(EIP)  Команда
0000:               Call $0 :т.е. ESP=ESP-4; => [ESP]=0005;
0005:               pop ebx :т.е. EBX=[ESP]; => ESP=ESP+4;
0006:               ...
Результат: мы знаем что команда pop ebx находится по адрессу 0005 (PS: т.к. команда pop ebx размером один байт - то EIP=0006)

Удачи.

Это сообщение отредактировал(а) Girder - 12.10.2004, 10:22


--------------------
Как слышим, так и пишим.
Истина где-то там...
PM   Вверх
Girder
Дата 12.10.2004, 10:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Лентяй 2
***


Профиль
Группа: Участник Клуба
Сообщений: 1993
Регистрация: 12.5.2004

Репутация: нет
Всего: 155



Глянул предыдущию страницу... оказывается Chingachguk уже тебе это расписал... smile.gif
Единственно где он ошибся, это здесь:
Код
;; - а тут в esi заносится адрес метки @@Run
lea esi,[ebx-(@@Run-@@Go)]
На самом деле в esi заносится адресс метки @@Go

Цитата
Спрашивается - куда мы вернемся?
Туда... кто вызвал данный код(mov edx,100...)

Удачи.

Это сообщение отредактировал(а) Girder - 12.10.2004, 13:53


--------------------
Как слышим, так и пишим.
Истина где-то там...
PM   Вверх
cardinal
Дата 12.10.2004, 14:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Инженер
****


Профиль
Группа: Экс. модератор
Сообщений: 6003
Регистрация: 26.3.2002
Где: Германия

Репутация: нет
Всего: 99



Цитата(Girder @ 12.10.2004, 09:46)
Туда... кто вызвал данный код(mov edx,100...)

Girder, вот теперь я допер, спасибо... stena.gif Просто давно не программировал на асме.
Цитата(Girder @ 12.10.2004, 09:11)
cardinal стандартная фичка для получения регистра EIP(особенно полезен для кодов выполняемых в стеках, полиморфных программ и т.п. - то есть текущее расположение кода в памяти не известно, а знать хочется  ).

Я тоже самое делал проще... Приду домой гляну и напишу как, но что-то там с offset'ом. Операции call, pop не особо быстро выполняются и поэтому я тогда такой вариант не рассматривал.
Код
; не каждому компилятору понятные вещи, лень
; вникаться :)
;; - это не так, паскаль к примеру это поймет
;; - отлично
;; - а тут в esi заносится адрес метки @@Run
lea esi,[ebx-(@@Run-@@Go)]
...

А в MS Visual C++, такая вставка у меня не прокатила...

Chingachguk, а зачем тут такие навороты с самокопирующимся кодом, когда ведь можно цикл сделать? qstn.gif


--------------------
Немецкая оппозиция потребовала упростить натурализацию иммигрантов
В моем блоге: Разные истории из жизни в Германии

"Познание бесконечности требует бесконечного времени, а потому работай не работай - все едино".  А. и Б. Стругацкие
PM   Вверх
Akina
Дата 12.10.2004, 14:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20581
Регистрация: 8.4.2004
Где: Зеленоград

Репутация: нет
Всего: 454



Код
cseg segment byte public
assume cs:cseg,ds:cseg
org 100h
joke proc far
start:
mov bx,0ffh
xor si,si
call $+2
add dl,bh
lea dx,message
mov ah,9
int 21h
inc byte ptr ds:[pass]
retn
joke endp
message db 'Pass '
pass db '1.',0dh,0ah,24h
cseg ends
end start



--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
cardinal
Дата 12.10.2004, 18:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Инженер
****


Профиль
Группа: Экс. модератор
Сообщений: 6003
Регистрация: 26.3.2002
Где: Германия

Репутация: нет
Всего: 99



Я делал так:
Код
 ...
 ...
 ...
 mov edi, offset lPixel2
 jmp lPixel  
lPixel2:
 ...
 ...
 ...
lPixel:
 ...
 ...
 ...
jmp edi

Никаких call и pop и соответственно намного быстрее работает...


--------------------
Немецкая оппозиция потребовала упростить натурализацию иммигрантов
В моем блоге: Разные истории из жизни в Германии

"Познание бесконечности требует бесконечного времени, а потому работай не работай - все едино".  А. и Б. Стругацкие
PM   Вверх
Kaskad
Дата 13.10.2004, 16:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 324
Регистрация: 24.9.2004

Репутация: нет
Всего: 3



yasno.gif
Люди. А как вирсы писать на асме? Очень уж хочется пошкодничать adv/party.gif
а ещё слышал, что АСМ-любимый язык хакеров! Это правда? adv/camper.gif


--------------------
Well come to America!
PM MAIL   Вверх
cardinal
Дата 13.10.2004, 19:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Инженер
****


Профиль
Группа: Экс. модератор
Сообщений: 6003
Регистрация: 26.3.2002
Где: Германия

Репутация: нет
Всего: 99



Цитата(Kaskad @ 13.10.2004, 15:59)
Люди. А как вирсы писать на асме? Очень уж хочется пошкодничать

http://forum.vingrad.ru/index.php?act=SR&f=27

Такое на форуме не обсуждать запрещено!


--------------------
Немецкая оппозиция потребовала упростить натурализацию иммигрантов
В моем блоге: Разные истории из жизни в Германии

"Познание бесконечности требует бесконечного времени, а потому работай не работай - все едино".  А. и Б. Стругацкие
PM   Вверх
Chingachguk
Дата 14.10.2004, 08:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1232
Регистрация: 25.3.2002
Где: Москва

Репутация: нет
Всего: 18



Цитата
Никаких call и pop и соответственно намного быстрее работает...


То, что ты привел - не самокопирующийся код.

Цитата
Люди. А как вирсы писать на асме?


wasm.ru, раздел статей про вирусы. Сайт Z0mbie. VX-ORG.ua. etc.

Цитата
а ещё слышал, что АСМ-любимый язык хакеров!


Насчет "любимый" не обязательно, некоторые любят C. Дело в том, что хакер хочет знать, что происходит на самом деле, а на самом деле выполняются машинные инструкции.


--------------------
I don't like the drugs (but the drugs like me). M.Manson.
PM MAIL ICQ   Вверх
cardinal
Дата 14.10.2004, 09:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Инженер
****


Профиль
Группа: Экс. модератор
Сообщений: 6003
Регистрация: 26.3.2002
Где: Германия

Репутация: нет
Всего: 99



Цитата(Chingachguk @ 14.10.2004, 07:33)
То, что ты привел - не самокопирующийся код.

Я же про "дельта-смещение" говорил...



--------------------
Немецкая оппозиция потребовала упростить натурализацию иммигрантов
В моем блоге: Разные истории из жизни в Германии

"Познание бесконечности требует бесконечного времени, а потому работай не работай - все едино".  А. и Б. Стругацкие
PM   Вверх
Chingachguk
Дата 14.10.2004, 10:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1232
Регистрация: 25.3.2002
Где: Москва

Репутация: нет
Всего: 18



cardinal

А при чем тут дельта-смещение ? Просто offset-ом ты не получишь, где в данный момент выполняется твой код,.


--------------------
I don't like the drugs (but the drugs like me). M.Manson.
PM MAIL ICQ   Вверх
cardinal
Дата 14.10.2004, 14:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Инженер
****


Профиль
Группа: Экс. модератор
Сообщений: 6003
Регистрация: 26.3.2002
Где: Германия

Репутация: нет
Всего: 99



Может я на ручнике (что я пока не исключаю smile.gif), но в чем же разница в этих двух отрывках кода:
Код
...
...
...
mov edi, offset lPixel2
jmp lPixel  
lPixel2:
...
...
...
lPixel:
...
...
...
jmp edi

Код

...
...
...
call @@GetCurrentOffset
jmp lPixel
@@GetCurrentOffset:
...
...
...
lPixel:
...
...
...
pop ebx
jmp ebx



--------------------
Немецкая оппозиция потребовала упростить натурализацию иммигрантов
В моем блоге: Разные истории из жизни в Германии

"Познание бесконечности требует бесконечного времени, а потому работай не работай - все едино".  А. и Б. Стругацкие
PM   Вверх
Chingachguk
Дата 14.10.2004, 14:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1232
Регистрация: 25.3.2002
Где: Москва

Репутация: нет
Всего: 18



Код
mov edi, offset lPixel2


Это КОНСТАНТА. В edi помещается константа. В случае call+pop помещается ~ТЕКУЩЕЕ значение EIP.



--------------------
I don't like the drugs (but the drugs like me). M.Manson.
PM MAIL ICQ   Вверх
cardinal
Дата 14.10.2004, 14:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Инженер
****


Профиль
Группа: Экс. модератор
Сообщений: 6003
Регистрация: 26.3.2002
Где: Германия

Репутация: нет
Всего: 99



Вот теперь начинает допирать потихоньку, но вот Chingachguk что я еще не понимаю:
Если ты где то написал call, то в stack попадет eip в момент call. Это так?


--------------------
Немецкая оппозиция потребовала упростить натурализацию иммигрантов
В моем блоге: Разные истории из жизни в Германии

"Познание бесконечности требует бесконечного времени, а потому работай не работай - все едино".  А. и Б. Стругацкие
PM   Вверх
Chingachguk
Дата 14.10.2004, 14:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1232
Регистрация: 25.3.2002
Где: Москва

Репутация: нет
Всего: 18



Нет. В стек попадает тот адрес, куда нужно вернуться после выполнения подпрограммы - команда, следующая за call.


--------------------
I don't like the drugs (but the drugs like me). M.Manson.
PM MAIL ICQ   Вверх
cardinal
Дата 14.10.2004, 15:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Инженер
****


Профиль
Группа: Экс. модератор
Сообщений: 6003
Регистрация: 26.3.2002
Где: Германия

Репутация: нет
Всего: 99



Цитата(Chingachguk @ 14.10.2004, 13:57)
Нет. В стек попадает тот адрес, куда нужно вернуться после выполнения подпрограммы - команда, следующая за call.

Я это и имел в виду... smile.gif

Так вот вопрос: константа, не константа... В чем преимущество? Что можно сделать с call, что нельзя сделать так как я сделал?


--------------------
Немецкая оппозиция потребовала упростить натурализацию иммигрантов
В моем блоге: Разные истории из жизни в Германии

"Познание бесконечности требует бесконечного времени, а потому работай не работай - все едино".  А. и Б. Стругацкие
PM   Вверх
Chingachguk
Дата 14.10.2004, 16:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1232
Регистрация: 25.3.2002
Где: Москва

Репутация: нет
Всего: 18



БЛИН ! Представь себе, что твой код выполняется в ПРОИЗВОЛЬНОЙ области памяти. Ты не можешь привязываться к тому, что программа начала выполнение с такого-то адреса и т.п.


--------------------
I don't like the drugs (but the drugs like me). M.Manson.
PM MAIL ICQ   Вверх
Girder
Дата 14.10.2004, 21:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Лентяй 2
***


Профиль
Группа: Участник Клуба
Сообщений: 1993
Регистрация: 12.5.2004

Репутация: нет
Всего: 155



Chingachguk не кипятись, тут надо на примере...

cardinal к примеру возмем какую-нить функцию(и твой случай smile.gif ), ну не знаю... например некий счетчик:
Код
0000: lea ebx,@IncFunc :т.е. ebx присваивается 000Eh
0006:  push [ebx]
0008:  pop eax
0009:  inc eax
000A:  push eax
000B:  pop [ebx]
000D:  ret
@IncFunc:
000E:  DD 0

Т.в. к примеру тебе потребовалось размножить этот счетчик, т.е. несколько счетчиков под разные задачи... под каждую задачу свой уникальный счетчик!
Память выделяется динамически... к примеру под второй выделение по адрессу: 8130h
Т.о. второй код будет выглядит так: :
Код
8130: lea ebx,@IncFunc :т.е. ebx опять будет присваивается 000Eh!!!!!! - а должно быть 813E!!!!!!
8136:  push [ebx]
8138:  pop eax
8139:  inc eax
813A:  push eax
813B:  pop [ebx]
813D:  ret
813E:  DD 0

Итог: без корекции адресов и та и другая(и т.д.) будут всегда изменять значение по адрессу 000Eh(работать с этим адрессом) - т.е. счетчики не уникальные и в принципи все копии счетчика не нужны.
PS: А теперь представь что вторая копия вообще нужно забросить в другой процесс!
А когда ты будеш писать независящий код от его место выполнения, то... .... далее сам smile.gif .

Это сообщение отредактировал(а) Girder - 14.10.2004, 21:48


--------------------
Как слышим, так и пишим.
Истина где-то там...
PM   Вверх
cardinal
Дата 15.10.2004, 00:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Инженер
****


Профиль
Группа: Экс. модератор
Сообщений: 6003
Регистрация: 26.3.2002
Где: Германия

Репутация: нет
Всего: 99



Girder, спасибо...

Ладно. Понял я. Но вот кто мне объяснит: зачем такие вещи писать на асме? Я то думал о том, что речь идет о том, что мы хотим "прыгнуть" по определеннуму адресу в программе и все. Для этого можно хоть так, хоть так поступить. Я даже не думал о динамическом выделении памяти, не о самокопирующимся коде и т.д. Для этого помоему можно с таким же успехом использовать Си.
Для меня asm является возможностью ускорить процесс, а push, pop и похожее я стараюсь не использовать вообще (пока такое возможно конечно), т.к. тут я проигрываю (тому же компилятору Си)... Динамическое выделение памяти и ассемблер вместе я пока не разу не использовал, а тем более влезание в другие процессы... Не было необходимости. Я занимался пока больше embedded systems, а там каждый чих может дорого обойтись. Вместо динамического выделения памяти гораздо лучше бывает просто сделать буффер побольше и им пользоваться, а о нескольких процессах и речи быть иногда не может. Переключение между ними занимает слишком долго...

Chingachguk, вообще это интересный ход (в котором я не вижу пока никакого преимущества в сравнении с другими языками; то есть не вижу возможности исплоьзовать), с которым я еще с удовольствием на практике поиграюсь. Спасибо за терпение. Не обижайся! Если честно я твои сообщения всегда с интересом читаю... Прославился ты своими уроками у нас на форуме thumbs-up.gif


--------------------
Немецкая оппозиция потребовала упростить натурализацию иммигрантов
В моем блоге: Разные истории из жизни в Германии

"Познание бесконечности требует бесконечного времени, а потому работай не работай - все едино".  А. и Б. Стругацкие
PM   Вверх
Girder
Дата 15.10.2004, 09:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Лентяй 2
***


Профиль
Группа: Участник Клуба
Сообщений: 1993
Регистрация: 12.5.2004

Репутация: нет
Всего: 155



Цитата
Но вот кто мне объяснит: зачем такие вещи писать на асме?
А на чем еще такие вещи писать? Ну ладно попробуй... взять из любого своего приложения несколько функции(процедур) и перебросить в другое место памяти и передать им управление... и проверь сколько из них будут работать? Тем более: работает у тебя какая нить функция без проблем в любом участке памяти... ты её начал использовать... Через некоторое время сменился компилятор и хлоп... она уже может не работать, а от её работы будет зависять что-то очень для тебя нужное smile.gif . Короче: в языке высоко уровня у тебя будут связанны руки!

Ну а для чего это нужно:
1)Защита (в том числе разпакеры smile.gif );
2)Обход защиты (когда ни зя, а очень хочется smile.gif );
3)Атака (Имхо: 2 и 3 за частую одно и тоже);
4)Показать себя smile.gif


--------------------
Как слышим, так и пишим.
Истина где-то там...
PM   Вверх
cardinal
Дата 15.10.2004, 09:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Инженер
****


Профиль
Группа: Экс. модератор
Сообщений: 6003
Регистрация: 26.3.2002
Где: Германия

Репутация: нет
Всего: 99



Цитата(Girder @ 15.10.2004, 08:03)
Ну ладно попробуй... взять из любого своего приложения несколько функции(процедур) и перебросить в другое место памяти и передать им управление... и проверь сколько из них будут работать?

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


--------------------
Немецкая оппозиция потребовала упростить натурализацию иммигрантов
В моем блоге: Разные истории из жизни в Германии

"Познание бесконечности требует бесконечного времени, а потому работай не работай - все едино".  А. и Б. Стругацкие
PM   Вверх
oleg1973
Дата 15.10.2004, 10:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


asm fanat
****


Профиль
Группа: Экс. модератор
Сообщений: 3283
Регистрация: 16.7.2003
Где: Italy

Репутация: 1
Всего: 34



в некоторых случаях асм незаменим smile.gif
к примеру для борьбы с отладкой
простой и всем известный пример для дебугеров пользовательского уровня работающих на int3
Код

...
        mov al,[met]
met:
        nop
        cmp al,0x90
        jne настрассируют
...

всем известно что данные трасировшики втыкают int3 после обрабатываемой команды, в данном случае после mov al,[met]
там у нас стоит NOP (код 0х90)
ну а далше делаем проверку и все такое smile.gif



--------------------
SST 465555
icq 200-512-712
PM MAIL WWW ICQ   Вверх
Girder
Дата 15.10.2004, 10:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Лентяй 2
***


Профиль
Группа: Участник Клуба
Сообщений: 1993
Регистрация: 12.5.2004

Репутация: нет
Всего: 155



Цитата(cardinal @ 15.10.2004, 10:49)
Цитата(Girder @ 15.10.2004, 08:03)
Ну ладно попробуй... взять из любого своего приложения несколько функции(процедур) и перебросить в другое место памяти и передать им управление... и проверь сколько из них будут работать?

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

Не совсем... Смотри к примеру пример oleg1973 - в твоем случаи при переносе кода и передачи управления в новое место AL=90h, т.е. защита не сработает smile.gif


--------------------
Как слышим, так и пишим.
Истина где-то там...
PM   Вверх
oleg1973
Дата 15.10.2004, 21:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


asm fanat
****


Профиль
Группа: Экс. модератор
Сообщений: 3283
Регистрация: 16.7.2003
Где: Italy

Репутация: 1
Всего: 34



Girder biggrin.gif wink.gif
Код

...
    call met
met:
    pop esi
    mov al,[esi+4]
    nop
    cmp al,0x90
    jne нассноватрассирют





--------------------
SST 465555
icq 200-512-712
PM MAIL WWW ICQ   Вверх
Girder
Дата 15.10.2004, 22:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Лентяй 2
***


Профиль
Группа: Участник Клуба
Сообщений: 1993
Регистрация: 12.5.2004

Репутация: нет
Всего: 155



oleg1973 кто б спорил... Как раз именно это и пытаемся объяснить cardinal-у. О преимуществах и областях применения подобного кода(что ты привел выше) и ассемблера по сравнению с языками высокого уровня :) . Короче... читай выше топики :)

Это сообщение отредактировал(а) Girder - 16.10.2004, 21:09


--------------------
Как слышим, так и пишим.
Истина где-то там...
PM   Вверх
bagira
Дата 16.10.2004, 00:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 2858
Регистрация: 25.10.2003
Где: в тайге Уральских гор

Репутация: нет
Всего: 123



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


--------------------
Сегодня ты не бродил, не искал, не любил - можно сказать - и не жил...
Ф.Х. Дагларджа (Турция)
http://zveriolginovour.ru/
https://vmeste.yandex.ru/zveriolginovour 
PM MAIL WWW ICQ   Вверх
Chingachguk
Дата 16.10.2004, 12:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1232
Регистрация: 25.3.2002
Где: Москва

Репутация: нет
Всего: 18



Цитата
Chingachguk, вообще это интересный ход (в котором я не вижу пока никакого преимущества в сравнении с другими языками; то есть не вижу возможности исплоьзовать), с которым я еще с удовольствием на практике поиграюсь. Спасибо за терпение. Не обижайся!


1. Я не обижался ;)
2. Преимущества тебе объяснили ! Есть задачи, в которых без таких трюков тяжеловато; я бы еще упомянул "полезные" приложения типа монитра реестровых функций, сетевого обмена, антивирусы всякие - почитай, как делается перехват апи-функций и т.п., еще бы я про анализ аварийных дампов добавил. Или вот еще: на васме.ru недавно человек пост сделал: так он с целью повышения быстродействия на ходу перестраивает выполнимый код наиболее оптимальным способом.


--------------------
I don't like the drugs (but the drugs like me). M.Manson.
PM MAIL ICQ   Вверх
oleg1973
Дата 16.10.2004, 16:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


asm fanat
****


Профиль
Группа: Экс. модератор
Сообщений: 3283
Регистрация: 16.7.2003
Где: Italy

Репутация: 1
Всего: 34



Chingachguk
не вполне по "правилам" на лету код перестраивать biggrin.gif biggrin.gif biggrin.gif
код должен быть лехкочитаемым biggrin.gif biggrin.gif biggrin.gif
последний раз я такое на z80 делал biggrin.gif


--------------------
SST 465555
icq 200-512-712
PM MAIL WWW ICQ   Вверх
Chingachguk
Дата 17.10.2004, 00:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1232
Регистрация: 25.3.2002
Где: Москва

Репутация: нет
Всего: 18



oleg1973

Цитата

Правило одно - никаких правил.


Для асма ;)


--------------------
I don't like the drugs (but the drugs like me). M.Manson.
PM MAIL ICQ   Вверх
Се ля ви
Дата 25.10.2004, 20:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Java/SOAрхитектор
****


Профиль
Группа: Модератор
Сообщений: 2016
Регистрация: 5.6.2004
Где: place without tim e and space

Репутация: 8
Всего: 127



IMHO, основная функция ASM`а в наше время - это низкоуровневая отладка откомпилёного кода и асемблерные вставки в программах для убыстрения работы всяких циклов и рекурсии, связанных с вычислениями...

А писать на асме сложные современные приложения - рехнёшься, к тому же никаких сроков не хватит! :exclamation


--------------------
  )
 (
[_])
проф. блог

Кролики думали, что занимаются любовью, а на самом деле их просто разводили...
PM MAIL WWW Skype GTalk   Вверх
.RADIX
Дата 2.11.2004, 22:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 536
Регистрация: 19.11.2003

Репутация: нет
Всего: 0



Асм ещё долго не сойдёт со сцены.


--------------------
ASM Forever
PM MAIL   Вверх
bagira
Дата 20.11.2004, 20:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 2858
Регистрация: 25.10.2003
Где: в тайге Уральских гор

Репутация: нет
Всего: 123



Цитата
IMHO, основная функция ASM`а в наше время - это низкоуровневая отладка откомпилёного кода и асемблерные вставки в программах для убыстрения работы всяких циклов и рекурсии, связанных с вычислениями...

А также - работа с железом напрямую. Эта область довольно узкая, но еще долго будет нужна.


Цитата
А писать на асме сложные современные приложения - рехнёшься, к тому же никаких сроков не хватит!

Да, ассемблер не для этого предназначен.



--------------------
Сегодня ты не бродил, не искал, не любил - можно сказать - и не жил...
Ф.Х. Дагларджа (Турция)
http://zveriolginovour.ru/
https://vmeste.yandex.ru/zveriolginovour 
PM MAIL WWW ICQ   Вверх
chipset
Дата 27.11.2004, 19:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 4071
Регистрация: 11.1.2003
Где: Seattle, US

Репутация: 4
Всего: 165



Цитата(bagira @ 20.11.2004, 09:30)
А также - работа с железом напрямую. Эта область довольно узкая, но еще долго будет нужна.

Есть такая вещь как Driver Development Kit
Добавлено @ 19:08
А из LPT порта вообще можно при помощи бэйсика элементарно читать.. smile

Это сообщение отредактировал(а) chipset - 27.11.2004, 19:10


--------------------
Цитата(Jimi Hendrix)
Well, I stand up next to a mountain
And I chop it down with the edge of my hand
PM MAIL WWW   Вверх
bagira
Дата 31.12.2004, 00:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 2858
Регистрация: 25.10.2003
Где: в тайге Уральских гор

Репутация: нет
Всего: 123



Цитата(chipset @ 27.11.2004, 19:07)
А из LPT порта вообще можно при помощи бэйсика элементарно читать..

Да, но я со стандартными портами не работаю.



--------------------
Сегодня ты не бродил, не искал, не любил - можно сказать - и не жил...
Ф.Х. Дагларджа (Турция)
http://zveriolginovour.ru/
https://vmeste.yandex.ru/zveriolginovour 
PM MAIL WWW ICQ   Вверх
Medved
Дата 31.12.2004, 01:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 7209
Регистрация: 15.9.2002
Где: Kazakhstan, Astan a

Репутация: 2
Всего: 154



Интересная дисскусия.


--------------------
http://extreme.sport-express.ru/
...и неважно сколько падал, важно сколько ты вставал...
PM MAIL WWW ICQ Skype GTalk   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила ведения Религиозных войн
Smartov
1. Уважайте собеседника
2. Собеседник != враг
3. Старайтесь воздерживаться от тем вида "Windows Rulez" или "Linux Rulez"

С уважением, Smartov.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Религиозные войны | Следующая тема »


 




[ Время генерации скрипта: 0.2149 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.