pytanie o opcod CPUID

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.

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.

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