Форум: "Основная";
Текущий архив: 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.031 c