Форум: "Система";
Текущий архив: 2003.12.23;
Скачать: [xml.tar.bz2];
ВнизCeleron 2 ГГц и Hyper-Threading Найти похожие ветки
← →
Woolen (2003-10-20 13:27) [0]Подскажите, кто может. Делаю так:
Result := False;
asm
push eax
push ebx
push ecx
push edx
xor eax,eax
cpuid
mov EAXCopy,eax
pop edx
pop ecx
pop ebx
pop eax
end;
if EAXCopy > 0 then
begin
asm
push eax
push ebx
push ecx
push edx
mov eax,1
cpuid
mov EDXCopy, edx
pop edx
pop ecx
pop ebx
pop eax
end;
Result := EDXCopy and $10000000 <> 0;
end;
EAXCopy и EDXCopy - переменные типа Cardinal. Это я пытался написать функцию, проверяющую наличие Hyper-Threading. Функция возвращает True на Celeron 2 ГГц. У него что, Hyper-Threading есть, или я что-то сделал неправильно?
← →
ZeroDivide (2003-10-20 13:47) [1]Нда... не знаю как на счет HT в твоем целероне, почему бы кстати и нет? но вот вместо
push eax
push ebx
push ecx
push edx
я бы поставил pusha уж точно, если вобще pusha не генериться компилятором автоматически на инструкции asm .
← →
Woolen (2003-10-20 14:52) [2]
> я бы поставил pusha уж точно, если вобще pusha не генериться
> компилятором автоматически на инструкции asm.
нет, не генерится.
и не pusha, а pushad, потому что перед pusha Delphi поставит префикс, обозначающий, что операция 16-битная. Просто я как-то о ней не подумал. Да и боюсь, что что-то лишнее останется неизменным. Укакзатель на текущую команду где вообще хранится? Что-то я не помню... Или он в недоступном месте?
← →
VMcL (2003-10-20 19:54) [3]Вопрос №1: на фига push регистры eax, edx и ecx?
← →
VMcL (2003-10-20 20:02) [4]
function TestHT: Boolean;
asm
push ebx
xor eax, eax
cpuid
test eax, eax
jnz @@OK
@@No: xor eax, eax
jmp @@Exit
@@OK: mov eax, 1
cpuid
test edx, 1 shl 28
jz @@No
mov eax, 1
@@Exit: pop ebx
end;
Страницы: 1 вся ветка
Форум: "Система";
Текущий архив: 2003.12.23;
Скачать: [xml.tar.bz2];
Память: 0.45 MB
Время: 0.012 c