1 /* 2 * Copyright 2003 Sun Microsystems, Inc. All Rights Reserved. 3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. 4 * 5 * This code is free software; you can redistribute it and/or modify it 6 * under the terms of the GNU General Public License version 2 only, as 7 * published by the Free Software Foundation. 8 * 9 * This code is distributed in the hope that it will be useful, but WITHOUT 10 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or 11 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License 12 * version 2 for more details (a copy is included in the LICENSE file that 13 * accompanied this code). 14 * 15 * You should have received a copy of the GNU General Public License version 16 * 2 along with this work; if not, write to the Free Software Foundation, 17 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. 18 * 19 * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara, 20 * CA 95054 USA or visit www.sun.com if you need additional information or 21 * have any questions. 22 * 23 */ 24 25 package sun.jvm.hotspot.asm.x86; 26 27 import sun.jvm.hotspot.utilities.*; 28 29 public class X86SegmentRegisters { 30 31 public static final int NUM_SEGMENT_REGISTERS = 6; 32 33 public static final X86SegmentRegister ES; 34 public static final X86SegmentRegister CS; 35 public static final X86SegmentRegister SS; 36 public static final X86SegmentRegister DS; 37 public static final X86SegmentRegister FS; 38 public static final X86SegmentRegister GS; 39 40 private static X86SegmentRegister segmentRegisters[]; 41 42 static { 43 //Segment registers 44 ES = new X86SegmentRegister(0, "%es"); 45 CS = new X86SegmentRegister(1, "%cs"); 46 SS = new X86SegmentRegister(2, "%ss"); 47 DS = new X86SegmentRegister(3, "%ds"); 48 FS = new X86SegmentRegister(4, "%fs"); 49 GS = new X86SegmentRegister(5, "%gs"); 50 51 segmentRegisters = (new X86SegmentRegister[] { 52 ES, CS, SS, DS, FS, GS 53 }); 54 } 55 56 public static int getNumberOfRegisters() { 57 return NUM_SEGMENT_REGISTERS; 58 } 59 60 public static X86SegmentRegister getSegmentRegister(int regNum) { 61 if (Assert.ASSERTS_ENABLED) { 62 Assert.that(regNum > -1 && regNum < NUM_SEGMENT_REGISTERS, "invalid segment register number!"); 63 } 64 return segmentRegisters[regNum]; 65 } 66 }