OSDev.org
https://forum.osdev.org/

32 bit
https://forum.osdev.org/viewtopic.php?f=1&t=12747
Page 1 of 1

Author:  Jabus [ Sat Jan 20, 2007 7:47 am ]
Post subject:  32 bit

heres just a quick question. If i want to use the 32 bit registers do i have to be in protected mode?

Author:  bubach [ Sat Jan 20, 2007 7:48 am ]
Post subject: 

No, but you better check so that it's a 386 or higher first.

Author:  Candy [ Sat Jan 20, 2007 7:51 am ]
Post subject: 

bubach wrote:
No, but you better check so that it's a 386 or higher first.

or register an invalid opcode handler (which then errs out) or just expect a crash.

Author:  Jules [ Tue Jan 30, 2007 8:26 am ]
Post subject: 

The invalid opcode exception was only introduced on 386, IIRC. I once wrote a 386 detection routine that was small enough to fit in my boot sector, alongside the routine to load my stage 2 boot loader from a file in the root directory of a FAT filesystem, AND intelligible error messages for when stuff went wrong. I thought that was pretty cool at the time! :)

Author:  JAAman [ Tue Jan 30, 2007 11:44 am ]
Post subject: 

if you want the code for this, it is quite simple:

Code:
MOV AX, 0xF000           ; set all the high bits to 1
PUSHF                    ; save state of flags register before modifying
PUSH AX
POPF                     ; move AX into FLAGS
PUSHF
POP AX                   ; move it back -- anything in flags forced to a specific value is changed
POPF                     ; restore previous flags
AND AH,0xF0              ; mask out the bottom part, and move it into flags for checking
JS no386                 ; the sign bit is only set on 8086/8
JZ no386                 ; bits 12:15 0 on start, and cannot be changed in RMode on 286,
                                                ; but can on 386


:386code                 ; if you get here you have a 386

standard disclaimer:
this code is public domain, and can be used by anyone for any reason, and modified in any way -- im not responsible for any problems with this code

Page 1 of 1 All times are UTC - 6 hours
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
http://www.phpbb.com/