pytanie o opcod CPUID

Odpowiedz Nowy wątek
2013-02-20 19:04
0

Pisze w MASM32 program identyfikujący CPU, ale najnowszy MASM32 nie wspiera instrukcji CPUID na procesorach ponizej 586, chociaż na wielu 486 ten opcode jest zaimplementowany. Rozwiązałem to w taki sposób:


include \masm32\include\masm32rt.inc
.486
iCPUID macro           ;chodzi o to makro, zawiera ono heksadecymalna wartość CPUID
db 0FH, 0A2H
endm

.data?
.data
.code
start:
            pushfd
            pop     eax
            mov     ecx, eax
            xor     eax, 200000h
            push    eax
            popfd   
            pushfd
            pop     eax

            ;mov        ecx, eax                        ;PUNKT TESTOWY
            xor     eax, ecx                                             ;sprawdzenie czy da się ustawić ID flag
            jne     koniec

                        xor            eax, eax
                        iCPUID                                                                ;tutaj jest to makro wykorzystane
koniec:
invoke ExitProcess, 0

end start

Pytanie brzmi: czy to rozwiązanie nie spowoduje Invalid opcode exception, skoro procesor nie mogący zmienić ID flagi zostanie wyrzucony na koniec kodu - czy to jest w jakiś sposób niebezpieczne? A także czy jest sens pisania takiego program na 486. Podobno prawie wszystkie obecne systemy operacyjne nie da się zainstalować na komputery z tak starymi procesorami.

edytowany 1x, ostatnio: axiv, 2013-02-20 19:07

Pozostało 580 znaków

2013-02-20 19:15
ŁF
0

strzelam, że 486 ma mniej niż promil używanych obecnie komputerów. ostatni procesor 486 wyprodukowano w 1994 roku, to prawie 20 lat temu. żadnego z nowszych windows nie zainstalujesz na czymkolwiek poniżej pentium.


Pozostało 580 znaków

Odpowiedz
Liczba odpowiedzi na stronę

1 użytkowników online, w tym zalogowanych: 0, gości: 1, botów: 0