Главная страница
    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.47 MB
Время: 0.048 c
1-41155
Niobe
2003-11-03 11:02
2003.11.13
Списки или запросы


1-41644
Lena19
2003-10-25 21:55
2003.11.13
задержка на выполнеие кода


9-40780
_0$a_
2003-05-06 22:42
2003.11.13
помогите Советом


14-42068
Lmz
2003-10-14 01:19
2003.11.13
Начинающим программистам


3-41026
kaif
2003-10-15 15:47
2003.11.13
Толку от UDF RAND() ?





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский