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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> СТОИТ ЛИ ПАРИТЬСЯ ? 
:(
    Опции темы
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   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила ведения Религиозных войн
Smartov
1. Уважайте собеседника
2. Собеседник != враг
3. Старайтесь воздерживаться от тем вида "Windows Rulez" или "Linux Rulez"

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

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


 




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


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

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