x86registerpool.java
来自「纯java操作系统jnode,安装简单和操作简单的个人使用的Java操作系统」· Java 代码 · 共 54 行
JAVA
54 行
/*
* $Id: X86RegisterPool.java,v 1.1 2004/01/10 23:44:16 msiddalingaiah Exp $
*/
package org.jnode.vm.x86.compiler.l2;
import org.jnode.assembler.x86.Register;
import org.jnode.util.BootableArrayList;
import org.jnode.vm.compiler.ir.Operand;
import org.jnode.vm.compiler.ir.RegisterPool;
/**
* @author Madhu Siddalingaiah
*
*/
public class X86RegisterPool extends RegisterPool {
BootableArrayList registers;
public X86RegisterPool() {
registers = new BootableArrayList();
registers.add(Register.EAX);
registers.add(Register.EBX);
registers.add(Register.ECX);
registers.add(Register.EDX);
// not sure what to do with ESI and EDI just yet...
}
/* (non-Javadoc)
* @see org.jnode.vm.compiler.ir.RegisterPool#request(int)
*/
public Object request(int type) {
if (type == Operand.LONG) {
return null;
}
if (type == Operand.FLOAT || type == Operand.DOUBLE) {
throw new IllegalArgumentException("floats and double not yet supported");
}
return registers.remove(registers.size() - 1);
}
/* (non-Javadoc)
* @see org.jnode.vm.compiler.ir.RegisterPool#release(java.lang.Object)
*/
public void release(Object register) {
registers.add(register);
}
/* (non-Javadoc)
* @see org.jnode.vm.compiler.ir.RegisterPool#supports3AddrOps()
*/
public boolean supports3AddrOps() {
return false;
}
}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?