Не ставится прога - Assembler
Формулировка задачи:
Посмотрите пожалуста Скачал прогу, хотел поставить. Прога выкинула флаг- требуется отладка с помо визуал студио. Тема кажется точно вышла за рамки плюсов, пожалуста давайте продолжим тут.
Решение задачи: «Не ставится прога»
textual
Листинг программы
function TForm1.CheckSSE2: boolean; var Temp: dword; begin Temp := 1; asm push ebx mov eax,1 db $0F,$A2 test edx,$4000000 jz @NOSSE2 mov edx,0 mov Temp,edx @NOSSE2: pop ebx end; CheckSSE2 := Temp = 0; end; procedure TForm1.Button1Click(Sender: TObject); begin if CheckSSE2 then ShowMessage( 'Поддерживается' ) else ShowMessage( 'Не поддерживается' ) end;
Объяснение кода листинга программы
Код выполняет проверку поддержки инструкций SSE2 процессором.
- Переменная Temp инициализируется значением 1.
- Затем выполняется блок ассемблерного кода: — Push ebx на стек для сохранения регистра ebx. — Mov eax,1 загрузка значения 1 в регистр eax. — Db $0F,$A2 это инструкция movaps xmm0,xmm1, где xmm0 содержит значение 0x40000000, а xmm1 не используется. — Test edx,$40000000 проверяется, является ли верхний бит регистра edx единицей, что означает, поддерживает ли процессор SSE2. — Jz @NOSSE2 если верхний бит регистра edx равен 0, то есть процессор не поддерживает SSE2, то выполняется следующий код. — Mov edx,0 очищается регистр edx. — Mov Temp,edx значение регистра edx копируется в переменную Temp. — Pop ebx регистр ebx восстанавливается из стека. — @NOSSE2 это метка, которая не выполняется, если процессор поддерживает SSE2.
- Переменная CheckSSE2 устанавливается в True, если процессор поддерживает SSE2, иначе она устанавливается в False.
- При нажатии кнопки Button1 выполняется следующая проверка:
— Если CheckSSE2 равно True, то выводится сообщение
Поддерживается
. — Если CheckSSE2 равно False, то выводится сообщениеНе поддерживается
.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д