vmx86stackreader.java
来自「纯java操作系统jnode,安装简单和操作简单的个人使用的Java操作系统」· Java 代码 · 共 86 行
JAVA
86 行
/*
* $Id: VmX86StackReader.java,v 1.3 2004/02/26 10:33:38 epr Exp $
*/
package org.jnode.vm.x86;
import org.jnode.vm.Address;
import org.jnode.vm.VmStackReader;
/**
* Stack frame reader for the X86 architecture.
*
* Strack frame layout.
*
* <pre>
* .. bottom of stack ..
* method argument 1
* ..
* method argument n
* return address (pushed by CALL)
* old EBP
* magic constants
* java program counter
* VmMethod reference (( EBP points here
* local variables
* calculation stack
* </pre>
*
* @author Ewout Prangsma (epr@users.sourceforge.net)
*/
public class VmX86StackReader extends VmStackReader {
// Locals are before this object.
// ...
public static final int METHOD_OFFSET = 0;
//public static final int PC_OFFSET = 4;
public static final int MAGIC_OFFSET = 4;
public static final int PREVIOUS_OFFSET = 8;
//public static final int ESI_OFFSET = 16;
//public static final int EDI_OFFSET = 20;
//public static final int EBX_OFFSET = 20;
public static final int RETURNADDRESS_OFFSET = 12;
// Stack follows here
// ...
/**
* @param sf
* @return The offset of he magic in the given stackframe
*/
protected int getMagicOffset(Address sf) {
return MAGIC_OFFSET;
}
/**
* @param sf
* @return int
*/
protected int getMethodOffset(Address sf) {
return METHOD_OFFSET;
}
/**
* @param sf
* @return int
*/
protected final int getPCOffset(Address sf) {
return 0xFFFFFFFF;//PC_OFFSET;
}
/**
* @param sf
* @return int
*/
protected int getPreviousOffset(Address sf) {
return PREVIOUS_OFFSET;
}
/**
* @param sf
* @return int
*/
protected int getReturnAddressOffset(Address sf) {
return RETURNADDRESS_OFFSET;
}
}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?