Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2003.11.13;
Скачать: [xml.tar.bz2];

Вниз

Как создать ф-ию на 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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.48 MB
Время: 0.031 c
3-41020
Vick
2003-10-15 11:16
2003.11.13
Variant - неизвестный тип для ClientDataSet


1-41533
Эдуард
2003-10-28 10:09
2003.11.13
PageControl без вкладок


1-41697
Endi
2003-11-02 16:17
2003.11.13
Почтовик по умолчанию


1-41142
niva
2003-11-03 13:12
2003.11.13
отчет


14-42093
Kein
2003-10-21 21:53
2003.11.13
помогите отладить алгоритм!!!!!!!





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский