Форум: "Потрепаться";
Поиск по всему сайту: delphimaster.net;
Текущий архив: 2002.04.01;
Скачать: [xml.tar.bz2];




Вниз

Хороший водитель может и не знать о том как устроен движек, но классным гонщиком при таком подходе он ни когла не станет!!! 


Василий   (2002-02-16 00:24) [0]

Поэтому призываю всех кто не знает Assembler (в том числе и себя) заняться его изучением.

Для начала может кто подскажет где можно слить MASM или TASM ?
И какой удобней использовать ?



Tosov   (2002-02-16 00:47) [1]

Я не специалист по гонкам, но гонщики сами движок ремонтируют??



iZEN   (2002-02-16 10:16) [2]

Интересно, гнщик Формулы-I тоже должен разбираться в двигателе своей машины? Может ему лучше заняться повышением мастерства вождения болида Формулы-I?
А если я не пишу на ассемблере принципиально?
Даже не всегда мне хочется разбираться в байт-кодах Java, хотя что в них интересного -- риторический вопрос.



Nemesis   (2002-02-16 10:27) [3]

Категорически несогласеню. Ведь есть же (были) музыканты незнающие или неумеющие читать по нотам



VuDZ   (2002-02-16 11:50) [4]

скачай себе processor pack от MS - там есть ml.exe - новый MASM, который поддерживает SSE, 3DNow и пр.



Desdechado   (2002-02-16 18:10) [5]

всегда были гении и твердые середнячки, делающие основную массу работы. каждому свое ...



VuDZ   (2002-02-17 14:08) [6]

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

что быстрее:


mov al, BYTE PTR [esp+4]
test al, al
jne $B1$3
mov eax, 1
ret
$B1$3:
mov eax, -1
ret



push ebp
mov ebp, esp
mov eax, DWORD PTR _c$[ebp]
and eax, 255
neg eax
sbb eax, eax
and al, -2
add eax, 1
pop ebp
ret 0


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

PS этот код проверяет на равенство 0 одну переменную и возвращает 1 или -1



Василий   (2002-02-18 06:30) [7]

Я не призыаю писать на Assembler"е, а призываю хотя-бы его знать.

Когда рулиш на высоком уровне и знаеш что при этом происходит под "капотом" как-то машина лучьше слушается...



Алексей Петров   (2002-02-19 10:09) [8]

> VuDZ © (17.02.02 14:08)
> что быстрее:

Вопрос далеко не однозначен.
1) Где вы взяли второй код? Компилятор Delphi у меня сделал сравнение таким:

test al, al
jnz @m
mov eax,1
ret
@m:
or eax, -1
ret

Это ничуть не медленнее Вашего первого варианта, но на 3 байта короче него :)

Этот код, правда, получен при регистровом соглашении о вызовах процедуры - но кому в голову придет при вызове "очень много раз в секунду" использовать cdecl?

2) Учитывая архитектурные особенности CPU начиная с i486 и выше,
код
mov al, BYTE PTR [esp+4]
test al, al

будет выполняться практически с такой же скоростью, что
push ebp
mov ebp, esp
mov eax, DWORD PTR [ebp]

Это связано с тем, что использования регистра esp, да еще и со смещением - очень длительная операция (2-3 такта, в зависимости от предшествующих команд. В данносм случаи будет 3, если только выполнен вызов функции).
Комманды же push ebp; mov ebp, esp в паре выполнятся за 1 такт, а последующий mov - за 1 или 2 - как конвеер сработает.

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

Ассемблер я использую в том случаи, когда мне не удается четко изложить свою мысль на ЯВУ так, чтоб компилятор сгенерировал оптимальный код. За все время win32 программирования я применял asm только 2 раза. И то 1 раз для выпендрежа.




Форум: "Потрепаться";
Поиск по всему сайту: delphimaster.net;
Текущий архив: 2002.04.01;
Скачать: [xml.tar.bz2];




Наверх





Память: 0.74 MB
Время: 0.016 c
3-9               Андре                 2002-03-04 12:07  2002.04.01  
IBSQL


14-304            Виктор55              2002-02-17 22:20  2002.04.01  
Быстродействие компьютера при обычном использовании


1-125             Yulik                 2002-03-21 13:13  2002.04.01  
Работа со строками


3-49              boogier               2002-03-07 14:33  2002.04.01  
Как избежать ошибки при выпонении запроса SQL


3-38              zje                   2002-03-06 17:23  2002.04.01  
MSSQL и ADOQuery с параметром типа TDateTime