Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2003.11.13;
Скачать: CL | DM;

Вниз

Как создать ф-ию на ASM, чтобы параметры через регистры?   Найти похожие ветки 

 
Dima_dvp ©   (2003-10-25 00:53) [0]

Как создать ф-ию на ASM, чтобы параметры через регистры передавались?


procedure MyNotEqual(A, B: Integer);
asm
MOV EAX,A
MOV EBX,B

SUB EAX,EBX

MOV Result,EAX


Что надо изменить, чтобы было лучше:) (чтобы без памяти)


 
default ©   (2003-10-25 01:02) [1]

они и так так передаются по умолчанию


 
Юрий Федоров ©   (2003-10-25 01:24) [2]

>>>default © (25.10.03 01:02) [1]
Да ладно


 
Dima_dvp ©   (2003-10-25 01:30) [3]

to default:
Не понятно что-то.
Это получается что привызове ф-ии будет так:



MOV EAX,EAX //Если A в EAX
MOV EBX,EBX //Если B в EBX
SUB EAX,EBX

MOV Result,EAX



Что-то сомнительно. Но даже если это и так то как определить в каком регистре какой параметр? А если параметров больше чем регистьров? Расскажите кому не лень.


 
default ©   (2003-10-25 01:32) [4]

Юрий Федоров © (25.10.03 01:24) [2]
не ладно, а именно так, естественно пока регистров хватает, потом через стек


 
default ©   (2003-10-25 01:33) [5]

Dima_dvp © (25.10.03 01:30) [3]
сомнительно, смотрите окно отладчика


 
Dima_dvp ©   (2003-10-25 01:40) [6]

Тогда такой пример. Ф-ия имеет столько параметров, сколько всего регистров общего назначения. Тогда получается я должен в функции сначала их сбросить в память, чтобы освободить регистры, а потом только начать исполнение ф-ии. Если это так то это по меньшей мере не рентабельно. (как я - против Borland попёр)


 
Юрий Федоров ©   (2003-10-25 01:44) [7]

>>default © (25.10.03 01:33) [5]
Да уж, пардон )) Век живи-век учись
У меня он 3 параметра заагнаал в регистры (eax, edx, ecx)? а остаальные в стек.
Вот только всегда ли так будет ?


 
default ©   (2003-10-25 01:45) [8]

Dima_dvp © (25.10.03 01:40) [6]
"Тогда получается я должен в функции сначала их сбросить в память, чтобы освободить регистры"
да - если требуется, но параметры не во все регистры общего назначения помещаются(автоматом), в хелпе есть про это
почему же не рентабельно?не рентабельно потому, что регистров общего назначения мало, а не потому, что они в регистрах, регистровые операции быстрее


 
default ©   (2003-10-25 01:47) [9]

Юрий Федоров © (25.10.03 01:44) [7]
в хелпе про это есть
всегда ли?пока Borland что-нибудь не изменит в очередной версии Delphi(а так всегда)
вообще это намного удобней и быстрей


 
Dima_dvp ©   (2003-10-25 01:50) [10]

Всё Понятно. Одно плохо(хотя конечно это такая мелочь), что если параметр передаётся через регистр, то в моём примере наверху произойдёт копирование из регистра в регистр(совсем лишнее в данном случае)

Всем спасибо за точные и понятные ответы


 
default ©   (2003-10-25 01:52) [11]

Dima_dvp © (25.10.03 01:50) [10]
это наоборот хорошо - убери эту лишнюю строчку


 
Dima_dvp ©   (2003-10-25 01:56) [12]

Если я уберу эту лишнюю строчку, то где гарантия что в Delphi8 Borland не сделает так что все параметры будут передаваться только через память и тогда это работать не будет(ну это конечно врятли когда два параметра, но в общем случае)


 
default ©   (2003-10-25 01:59) [13]

Dima_dvp © (25.10.03 01:56) [12]
не, уж лучше оптимизировать настоящий код, чем оставлять неоптимальный из-за неизвестного будущего


 
Dima_dvp ©   (2003-10-25 02:03) [14]

Согласен. Просто всегда просматриваю все возможные + и -



Страницы: 1 вся ветка

Текущий архив: 2003.11.13;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.024 c
3-40903
ZA
2003-10-17 07:41
2003.11.13
INSERT и значение поля auto_increment


14-42060
Denis_Ac
2003-10-21 09:29
2003.11.13
Помогите решить проблему


3-41036
Fantom_
2003-10-08 13:13
2003.11.13
Сортировка по Lookup-полю


3-40893
Tina
2003-10-17 16:36
2003.11.13
Midas


14-41888
Gfa
2003-10-09 18:14
2003.11.13
Сотовая связь в Германии