В действительности компилятор также вставил инструкцию MOV и мы можем избавиться от лишних пересылок, но не получим преимущества, поскольку нет...
Все, что делается в оптимизаторе это возможность расчета максимально количества комбинаций. По этой причине мы должны оптимизировать оптимизатор...
F_MULF_ADD A*X Такт 1 F_MULF_ADD A*X Такт 2 F_MULF_ADD B*X A*X Такт 3 F_MULF_ADD B*X A*X Такт 4 F_MULF_ADD C*X B*X A*X Такт 5...
Урок 7 Добро пожаловать на урок номер 7. Темой сегодняшнего урока является плавающая запятая в BASM. Это уже было темой в более раннем уроке, но...
Метка If2 становится лишней и когда мы доходим до этой позиции, то мы знаем, что достигнут конец строки (ограничитель #0) и поэтому на не надо...
Когда мы проанализируем код, то мы увидим, что здесь есть смещение -1 при адресации строки. Нет необходимости вычитать это смещение при каждой...
Теперь можно выполнить некоторую оптимизацию. В начале превратим функцию в чисто ассемблерную. Метки были объяснены в листинге предыдущего кода....
В данный момент здесь нет фрейма стека. Регистры EBX и ESI используются, и поэтому требуется их сохранения и восстановление при выходе из функции....
Урок 6Это урок 6 и его тема CharPos. Данная функция ищет первое вхождение символа в строке, и возвращает его позицию когда найдет. Если ничего не...
function ForLoopBASM13(Start, Stop : Integer) : Integer; asm push ebx //push esi push edi //mov esi,eax //for I := Start to Stop do //mov ecx, esi...
function ForLoopBASM8(Start, Stop : Integer) : Integer; asm push ebp push ebx mov ebp,esp add esp,-14h mov edx,edx mov [ebp-4],eax //Result := 0;...
Регистр EAX используется для Start вверху функции и как Result в остальной части функции. Если нет перекрытия по использованию, то мы можем...
Урок 5Добро пожаловать на пятый урок. Его тема циклы. Мы увидим, как компилятор реализует циклы, и какую оптимизацию мы можем сделать в них. Мы...
function Min6(const A, B: Single) : Single; asm //push ecx sub esp, 4 //if A < B then fld dword ptr [ebp+0Ch] fcomp dword ptr [ebp+8] fstsw...
Урок 4В данном уроке мы посмотрим насчет ветвления, рассматривая это на примере конструкции IF-ELSE. Условное перемещение для плавающей запятой...
Урок 3Тема третьего урока MMX и SSE2, одновременно будет обсуждена 64-битная математика. И мы впервые обратим внимание на зависимость оптимизации...
Для начала уберем два строки FSTP/FLD поскольку они лишние.function SecondOrderPolynomial4(X : Double) : Double; const A : Double = 1; B : Double...
Урок 2Это вторая глава введения в программирование с помощью BASM в Delphi. В первой главе было короткое введение в целочисленный код, а в этой...
Урок 1Начнем с небольшого примера. Это функция для умножения на 2. function MulInt2(I : Integer) : Integer; begin Result := I * 2;...
Borland Assembler (BASM) уроки для начинающих Delphi , Синтаксис , Assembler взято здесь Денис Христенсен Из news://forums.borland.com...
Имена участников (разделяйте запятой).