| Клуб программистов Лучшая подборка книг и информации по программированию. |
-
Ассемблер. Модуль CpuInfo
Написано 09.06.2009 17:58 Нет комментариевЗдесь приведена часть проекта, модуль CpuInfo. Полностью проект находится на сайте Гуйдо Гайбелса.
{Author: Guido GYBELS, april 2001, All rights reserved. This unit offers some types and a global instance that uses the features of the CPUID instruction as it is implemented on modern Intel processors. By using the properties of the global CPUID object, application builders can quickly evaluate the features of the CPU their program is running on. This allows to optimise routines for specific CPU’s.
REVISION HISTORY: – april 2001, First version}
Читать продолжение записи » -
Ассемблер. Извлечение битовой маски из integer
Написано 09.06.2009 17:54 Нет комментариевfunction ExtractBits(const Value, Start, Count: Integer): Integer;
const
Mask: array[0..31] of Integer =
($01,$03,$07,$0F,$1F,$3F,$7F,$FF,
$01FF,$03FF,$07FF,$0FFF,$1FFF,$3FFF,$7FFF,$FFFF,
$01FFFF,$03FFFF,$07FFFF,$0FFFFF,
$1FFFFF,$3FFFFF,$7FFFFF,$FFFFFF,
$01FFFFFF,$03FFFFFF,$07FFFFFF,$0FFFFFFF,
$1FFFFFFF,$3FFFFFFF,$7FFFFFFF,$FFFFFFFF);
asm
xchg ECX,EDX
test EDX,EDX
jnz @@isoke
xor EAX,EAX
jmp @@ending
@@isoke:
dec EDX
and EDX,31
shr EAX,cl
and EAX,dword ptr [Mask+EDX*4]
@@ending:
end; -
Ассемблер. Сброс отдельного бита
Написано 09.06.2009 17:53 Нет комментариевfunction ClearBit(const Value, Pos: Integer): Integer;
asm
and EDX,31
btr EAX,EDX
end; -
Ассемблер. Установка отдельного бита (0-31) в единицу
Написано 09.06.2009 17:52 Нет комментариевfunction SetBit(const Value, Pos: Integer): Integer;
asm
and EDX,31
bts EAX,EDX
end; -
Ассемблер. Проверка установки отдельного бита (0-31)
Написано 09.06.2009 17:51 Нет комментариевfunction IsBit(Value, Pos: Integer): Boolean;
asm
mov ECX,EAX
xor EAX,EAX
and EDX,31
bt ECX,EDX
adc EAX,0
end;



Новые комментарии