主页
Top.Mail.Ru Yandeks.Metrika
论坛:“抢”;
当前存档: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.59 MB
时间:0.023 c
3-36
TYuri
2002-03-07 10:26
2002.04.01
帮助,帮助迫切需要帮助!


3-45
moor_38
2002-03-04 13:00
2002.04.01
DBGrin


7-334
内特
2001-12-29 17:26
2002.04.01
getusername


3-21
PeteDM
2002-03-05 16:54
2002.04.01
Interbase的


3-76
罗斯
2002-02-17 18:39
2002.04.01
进度条





南非荷兰语 阿尔巴尼亚人 阿拉伯语 亚美尼亚 阿塞拜疆 巴斯克 白俄罗斯 保加利亚语 加泰罗尼亚 简体中文 中国(繁体) 克罗地亚 捷克 丹麦语 荷兰人 英语 爱沙尼亚语 菲律宾人 芬兰 法文
加利亚西语 格鲁吉亚语 德语 希腊语 海地克里奥尔语 希伯来语 印地语 匈牙利 北日耳曼语 印度尼西亚人 爱尔兰语 意大利语 日本性玩偶 韩语 拉脱维亚 立陶宛 马其顿 马来语 马耳他语 挪威语
波斯语 波兰语 葡萄牙语 罗马尼亚 俄语 塞尔维亚 斯洛伐克 斯洛文尼亚 西班牙语 斯瓦希里 瑞典语 泰国人 土耳其 乌克兰 乌尔都语 越南人 威尔士语 意第绪语 孟加拉 波斯尼亚
宿务 世界语 古吉拉特语 豪萨语 苗族 伊博 爪哇 卡纳达语 高棉 老挝 拉丁语 毛利 马拉 蒙古人 尼泊尔 旁遮普 索马里 泰米尔人 泰卢固语 约鲁巴语
祖鲁
英文 Французский Немецкий Итальянский Португальский 俄文 Испанский