package de.bplaced.mtgxyz.mtg.multitask;
public class Registers {
byte[][] algreg=new byte[16][8];
long[] mmxreg=new long[8];
long[][] xmmreg=new long[16][2];
long rflags;
long rip;
public byte getah() {
return algreg[0][0];
}
public byte getal() {
return algreg[0][1];
}
public short getax() {
return (short) ((getah()*256)+getal());
}
public int geteax() {
return (getax()*65536)+((algreg[0][2]*256)+algreg[0][3]);
}
public long getrax() {
long wert;
wert=geteax()*((Integer.MAX_VALUE+1)*2);
byte[] buf=algreg[0];
for(int i=0;i<4;i++) {
algreg[0][i]=algreg[0][i+4];
}
wert+=geteax();
algreg[0]=buf;
return wert;
}
public void setah(byte reg) {
algreg[0][0]=reg;
}
public void setal(byte reg) {
algreg[0][1]=reg;
}
private void setax(byte[] reg) {
setah(reg[0]);
setal(reg[1]);
}
public void setax(short reg) {
byte[] regi=new byte[]{(byte)(reg/256),(byte)(reg%256)};
setax(regi);
}
private void seteax(byte[] reg) {
setax(new byte[]{reg[0],reg[1]});
algreg[0][2]=reg[2];
algreg[0][3]=reg[3];
}
private void seteax(short[] reg) {
seteax(new byte[]{(byte)(reg[0]/256),(byte)(reg[0]%256),(byte)(reg[1]/256),(byte)(reg[1]%256)});
}
public void seteax(int reg) {
seteax(new short[]{(short)(reg/65536),(short)(reg%65536)});
}
}