Talk About Network

Google


Register and Login
Nick
Password
Register create new account Sign up is FREE and you can post replies, new topics, bookmark posts and more!
Recover lost password


Programming > Assembly x86 > Re: About mov i...
Latest [ Topics | Posts ] Archive Post A New Topic Post a Reply
<< Topic < Post Post 8 of 9 Topic 4639 of 4729
Post > Topic >>

Re: About mov instruction and gs register Options

by "Wolfgang Kern" <spamtrap@[EMAIL PROTECTED] > May 1, 2008 at 11:13 PM

"leilei" wrote:

....
>> A MOV GS, with whatsoever value wont raise an exception except
>> if the CPU don't got a GS (EXCeption06 on x286 and previous).
>> 512 KB RAM ? mmh, are you sure you have a 486 CPU ?

> Hi, I can assure the CPU is 486.
> I do not understand the 'EXCeption06 on x286 and previous' you just
> mentioned. can you give me more information?

FS,GS weren't available on 286 and earlier, so these opcodes were
treated as 'illegal' (EXC06).

But anyway my statement is wrong because I assumed a defined GDT ...
so if your GDT is limited to a certain value then any attempt
to load a selector above it will result in EXC0D (GP#13),

and if your selector points to a descriptor which takes further
actions that aren't covered yet, you may see several exceptions
of any kind (stack/task/GP...)

The selector value you have in CX will point to the descriptor
at offset 'CX AND FFF8h' in your GDT if bit2 of CX is zero.

__
wolfgang



Perhaps my short overview is of some use for you:
_________________________________________________________
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Strict//EN"
       "http://www.w3.org/TR/html4/strict.dtd">

<html>
<head>
<!--
translated from page 366 out of the "Holy Book of KESYS" Jan.1999,
Author: Wolfgang Kern, Vienna Austria (LEOC, KESYS-development) >

<title>x86descriptors</title>
<style type="text/css">
<!--
tr {nowrap; font-weight:thin; font-family:Courier New; font-size:11pt; }
td {nowrap; align:center; }
-->
</style>
</head>


<body bgcolor="#FFFFFF" text="#000000" align="left">
<basefont face="Courier New">
<basefont size="1">

<u>IA32 Descriptors</caption></u>

<table border="1" frame="box" rules="all" bgcolor="#FFFFFF" height="200"
cellspacing="0" cellpadding="0"

bordercolor="#808080">
 <colgroup>
   <col width="8">
   <col width="24" align="middle" span=8>
   <col width="200" align="left" valign="top">
 </colgtroup>

<tr> <td>7</td>
     <td colspan="8">BASE 31..24</td>
<td rowspan="9">
<pre><b><u>
 DATA [93][GDT,LDT]</b></u>
 G 4Kb granular limit
 B 32-bit stack
 P present
 E expand down (stack)
 W writable
 A accessed</pre>
</td>
 </tr>

<tr> <td>6</td>
     <td><b>G</td>
     <td><b>B</td>
     <td><b>0</td>
     <td>x</td>
     <td nowrap colspan="4">LIM 19..16</td> </tr>

<tr> <td>5</td>
     <td>P</td>
     <td colspan="2">DPL</td>
     <td colspan="2" style="border-width:medium;border-color:#000000;
border-style:double;">
       <b>1 0</td>
     <td><b>E</td>
     <td><b>W</td>
     <td><b>A</td>   </tr>

<tr> <td>4</td>
     <td rowspan="3" colspan="8">BASE 0..23</td> </tr>

<tr> <td>3</td></tr>

<tr> <td>2</td></tr>

<tr> <td>1</td>
     <td rowspan="2" colspan="8">LIMIT 0..15</td> </tr>

<tr><td>0</td></tr>

<tr style="font-size:7pt;">
     <td></td>
     <td>7</td>
     <td>6</td>
     <td>5</td>
     <td>4</td>
     <td>3</td>
     <td>2</td>
     <td>1</td>
     <td>0</td> </tr>
</table>
<br>
<table border="1" frame="box" rules="all" bgcolor="#FFFFFF" height="200"
cellspacing="0" cellpadding="0"

bordercolor="#808080">

 <colgroup>
   <col width="8">
   <col width="24" align="middle" span=8>
   <col width="200" align="left" valign="top">
 </colgtroup>


<tr> <td>7</td>
     <td colspan="8">BASE 31..24</td>
<td rowspan="9">
<pre><b><u>
 CODE [9b][GDT,LDT]</u></b>
 G 4Kb granular
 B 32-bit
 P present
 C confirming
 R readable
 A accessed</pre>
</td></tr>

<tr> <td>6</td>
     <td><b>G</td>
     <td><b>B</td>
     <td><b>0</td>
     <td>x</td>
     <td nowrap colspan="4">LIM 19..16</td> </tr>

<tr> <td>5</td>
     <td>P</td>
     <td colspan="2">DPL</td>
     <td colspan="2" style="border-width:medium;border-color:#000000;
border-style:double; padding:0px;"><b>1

1</td>
     <td><b>C</td>
     <td><b>R</td>
     <td><b>A</td>   </tr>

<tr> <td>4</td>
     <td rowspan="3" colspan="8">BASE 0..23</td> </tr>

<tr> <td>3</td></tr>

<tr> <td>2</td></tr>

<tr> <td>1</td>
     <td rowspan="2" colspan="8">LIMIT 0..15</td> </tr>

<tr><td>0</td></tr>

<tr style="font-size:7pt;">
     <td></td>
     <td>7</td>
     <td>6</td>
     <td>5</td>
     <td>4</td>
     <td>3</td>
     <td>2</td>
     <td>1</td>
     <td>0</td> </tr>
</table>
<br>

<table border="1" frame="box" rules="all" bgcolor="#ffffff" height="200"
cellspacing="0" cellpadding="0"

bordercolor="#808080">
 <colgroup>
   <col width="8">
   <col width="24" align="middle" span=8>
   <col width="200" align="left" valign="top">
 </colgtroup>

<tr> <td>7</td>
     <td colspan="8">BASE 31..24</td>
<td rowspan="9"><pre><u><b>
 TASK-switch [81/89]</u>
               [GDT]</b>
 G 4Kb granular limit
 P present
 BT 32-bit
 BS task is busy</pre> </td></tr>

<tr> <td>6</td>
     <td><b>G</td>
     <td><b>0</td>
     <td><b>0</td>
     <td>x</td>
     <td nowrap colspan="4">LIM 19..16</td> </tr>

<tr> <td>5</td>
     <td>P</td>
     <td colspan="2">DPL</td>
     <td
style="border-color:#000000;border-width:medium;border-style:double"><b>0</t
d>
     <td><b>BT</td>
     <td  colspan= "3"
style="border-color:#000000;border-width:medium;border-style:double">
     <b>0 BS 1</td>

  </tr>

<tr> <td>4</td>
     <td rowspan="3" colspan="8">BASE 0..23</td> </tr>

<tr> <td>3</td></tr>

<tr> <td>2</td></tr>

<tr> <td>1</td>
     <td rowspan="2" colspan="8">LIMIT 0..15</td> </tr>

<tr><td>0</td></tr>

<tr style="font-size:7pt;">
     <td></td>
     <td>7</td>
     <td>6</td>
     <td>5</td>
     <td>4</td>
     <td>3</td>
     <td>2</td>
     <td>1</td>
     <td>0</td> </tr>
</table>

<br>
<table border="1" frame="box" rules="all" bgcolor="#ffffff" height="200"
cellspacing="0" cellpadding="0"

bordercolor="#808080">
 <colgroup>
   <col width="8">
   <col width="24" align="middle" span=8>
   <col width="200" align="left" valign="top">
 </colgtroup>

<tr> <td>7</td>
     <td rowspan="2" colspan="8">Linear Address 31..16</td>
<td rowspan="9"><pre><u><b>
 LDT         [82][GDT]</b></u></td></tr>

<tr> <td>6</td> </tr>

<tr> <td>5</td>
     <td>P</td>
     <td colspan="2">--</td>
<td style="border-color:#000000;border-width:medium;border-style:double">
     <b>0</td>
<td><b>0</td>
<td  colspan= "3"
style="border-color:#000000;border-width:medium;border-style:double">
     <b>0 1 0</td>
</tr>

<tr> <td>4</td>
     <td colspan="8">reserved</td> </tr>
<tr> <td>3</td>
     <td colspan="8">SEGMENT-</td> </tr>
<tr> <td>2</td>
     <td colspan="5">SELECTOR</td>
     <td>x</td>
     <td colspan="2">RPL</td> </tr>
<tr> <td>1</td>
     <td rowspan="2" colspan="8">Linear Address 15..0</td> </tr>

<tr><td>0</td></tr>
<tr style="font-size:7pt;">
     <td></td>
     <td>7</td>
     <td>6</td>
     <td>5</td>
     <td>4</td>
     <td>3</td>
     <td>2</td>
     <td>1</td>
     <td>0</td> </tr>
</table>
<br>

<br>
<table border="1" frame="box" rules="all" bgcolor="#ffffff" height="200"
cellspacing="0" cellpadding="0"

bordercolor="#808080">
 <colgroup>
   <col width="8">
   <col width="24" align="middle" span=8>
   <col width="200" align="left" valign="top">
 </colgtroup>

<tr> <td>7</td>
     <td rowspan="2" colspan="8">Offset 31..16</td>
<td rowspan="9"><pre><u><b>
Call-GATE [84/8c]
          [GDT,LDT]</b></u>
 T 32-bit
 L LDT (else GDT)
 Dwords copied from
 callers stack.
</td></tr>
<tr> <td>6</td> </tr>

<tr> <td>5</td>
     <td>P</td>
     <td colspan="2">DPL</td>
<td style="border-color:#000000;border-width:medium;border-style:double">
     <b>0</td>
<td><b>T</td>
<td  colspan= "3"
style="border-color:#000000;border-width:medium;border-style:double">
     <b>1 0 0</td>
</tr>

<tr> <td>4</td>
     <td colspan="4">0 0 0 0</td>
     <td colspan="4">Dwords </td>
 </tr>
<tr> <td>3</td>
     <td colspan="8">SEGMENT-</td> </tr>
<tr> <td>2</td>
     <td colspan="5">SELECTOR</td>
     <td>L</td>
     <td colspan="2">RPL</td> </tr>
<tr> <td>1</td>
     <td rowspan="2" colspan="8">Offset 15..0</td> </tr>

<tr><td>0</td></tr>
<tr style="font-size:7pt;">
     <td></td>
     <td>7</td>
     <td>6</td>
     <td>5</td>
     <td>4</td>
     <td>3</td>
     <td>2</td>
     <td>1</td>
     <td>0</td> </tr>
</table>
<br>

<table border="1" frame="box" rules="all" bgcolor="#ffffff" height="200"
cellspacing="0" cellpadding="0"

bordercolor="#808080">
 <colgroup>
   <col width="8">
   <col width="24" align="middle" span=8>
   <col width="200" align="left" valign="top">
 </colgtroup>

<tr> <td>7</td>
     <td rowspan="2" colspan="8">reserved</td>
<td rowspan="9"><pre><u><b>
TASK-GATE [85/8d]
         [GDT,IDT,LDT]</b></u>
 T: 32-bit
</td></tr>
<tr> <td>6</td> </tr>
<tr> <td>5</td>
     <td>P</td>
     <td colspan="2">DPL</td>
<td style="border-color:#000000;border-width:medium;border-style:double">
     <b>0</td>
<td><b>T</td>
<td  colspan= "3"
style="border-color:#000000;border-width:medium;border-style:double">
     <b>1 0 1</td>
</tr>

<tr> <td>4</td>
     <td colspan="8">reserved</td> </tr>
<tr> <td>3</td>
     <td colspan="8">SEGMENT-</td> </tr>
<tr> <td>2</td>
     <td colspan="5">SELECTOR</td>
     <td>x</td>
     <td colspan="2">RPL</td> </tr>
<tr> <td>1</td>
     <td rowspan="2" colspan="8">reserved</td> </tr>

<tr><td>0</td></tr>
<tr style="font-size:7pt;">
     <td></td>
     <td>7</td>
     <td>6</td>
     <td>5</td>
     <td>4</td>
     <td>3</td>
     <td>2</td>
     <td>1</td>
     <td>0</td> </tr>
</table>
<br>


<table border="1" frame="box" rules="all" bgcolor="#ffffff" height="200"
cellspacing="0" cellpadding="0"

bordercolor="#808080">
 <colgroup>
   <col width="8">
   <col width="24" align="middle" span=8>
   <col width="200" align="left" valign="top">
 </colgtroup>

<tr> <td>7</td>
     <td rowspan="2" colspan="8">Offset 31..16</td>
<td rowspan="9"><pre><u><b>
INT-GATE [86/8e][IDT]</b></u>
 T 32-bit
 disables IRQ,
 TRAP and NT cleared
 until IRET
</td></tr>
<tr> <td>6</td> </tr>
<tr> <td>5</td>
     <td>P</td>
     <td colspan="2">DPL</td>
<td style="border-color:#000000;border-width:medium;border-style:double">
     <b>0</td>
<td><b>T</td>
<td  colspan= "3"
style="border-color:#000000;border-width:medium;border-style:double">
     <b>1 1 0</td>
</tr>

<tr> <td>4</td>
     <td colspan="8">reserved</td> </tr>
<tr> <td>3</td>
     <td colspan="8">SEGMENT-</td> </tr>
<tr> <td>2</td>
     <td colspan="5">SELECTOR</td>
     <td>x</td>
     <td colspan="2">RPL</td> </tr>
<tr> <td>1</td>
     <td rowspan="2" colspan="8">Offset 15..0</td> </tr>

<tr><td>0</td></tr>
<tr style="font-size:7pt;">
     <td></td>
     <td>7</td>
     <td>6</td>
     <td>5</td>
     <td>4</td>
     <td>3</td>
     <td>2</td>
     <td>1</td>
     <td>0</td> </tr>
</table>
<br>


<table border="1" frame="box" rules="all" bgcolor="#ffffff" height="200"
cellspacing="0" cellpadding="0"

bordercolor="#808080">
 <colgroup>
   <col width="8">
   <col width="24" align="middle" span=8>
   <col width="200" align="left" valign="top">
 </colgtroup>

<tr> <td>7</td>
     <td rowspan="2" colspan="8">Offset 31..16</td>
<td rowspan="9"><pre><u><b>
INT-TRAP [87/8f][IDT]</b></u>
 T 32-bit
 IRQ-status unchanged,
 TRAP and NT cleared
 until IRET
</td></tr>
<tr> <td>6</td> </tr>
<tr> <td>5</td>
     <td>P</td>
     <td colspan="2">DPL</td>
<td style="border-color:#000000;border-width:medium;border-style:double">
     <b>0</td>
<td><b>T</td>
<td  colspan= "3"
style="border-color:#000000;border-width:medium;border-style:double">
     <b>1 1 1</td>
</tr>

<tr> <td>4</td>
     <td colspan="8">reserved</td> </tr>
<tr> <td>3</td>
     <td colspan="8">SEGMENT-</td> </tr>
<tr> <td>2</td>
     <td colspan="5">SELECTOR</td>
     <td>x</td>
     <td colspan="2">RPL</td> </tr>
<tr> <td>1</td>
     <td rowspan="2" colspan="8">Offset 15..0</td> </tr>

<tr><td>0</td></tr>
<tr style="font-size:7pt;">
     <td></td>
     <td>7</td>
     <td>6</td>
     <td>5</td>
     <td>4</td>
     <td>3</td>
     <td>2</td>
     <td>1</td>
     <td>0</td> </tr>
</table>
<br>

</font>
</body>
</html>
 




 9 Posts in Topic:
About mov instruction and gs register Options
leilei <spamtrap@[EMA  2008-04-30 09:55:11 
Re: About mov instruction and gs register Options
Frank Kotler <spamtra  2008-05-01 00:43:59 
Re: About mov instruction and gs register Options
"Alexei A. Frounze&q  2008-04-30 20:04:51 
Re: About mov instruction and gs register Options
"Wolfgang Kern"  2008-05-01 10:05:03 
Re: About mov instruction and gs register Options
Gil Hamilton <spamtra  2008-05-01 15:17:08 
Re: About mov instruction and gs register Options
"Wolfgang Kern"  2008-05-01 22:27:21 
Re: About mov instruction and gs register Options
leilei <spamtrap@[EMA  2008-05-01 07:55:45 
Re: About mov instruction and gs register Options
"Wolfgang Kern"  2008-05-01 23:13:59 
Re: About mov instruction and gs register Options
leilei <spamtrap@[EMA  2008-05-01 07:54:08 

Post A Reply:
  Go here to Signup

AddThis Feed Button


About - Advertising - Contact - Frequently Asked Questions - Privacy Policy - Terms of Use - Signup

Contact
tan12V112 Sat Jul 26 2:23:34 CDT 2008.