Главная страница
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.021 c
1-41497
qwe
2003-10-28 15:44
2003.11.13
Еще вопрос


3-41016
pwl
2003-10-15 21:26
2003.11.13
Как сохранить часть базы?????????


1-41580
malefik
2003-10-27 09:30
2003.11.13
DBGRID и полосы прокрутки


1-41601
han-bratan
2003-11-03 12:55
2003.11.13
русские буквы при нерускком locale


4-42299
ruslan_as
2003-09-09 16:22
2003.11.13
Как мне дождаться запуска открываемого файла?