Форум: "Потрепаться";
Текущий архив: 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 раз для выпендрежа.
Страницы: 1 вся ветка
Форум: "Потрепаться";
Текущий архив: 2002.04.01;
Скачать: [xml.tar.bz2];
Память: 0.47 MB
Время: 0.005 c