亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? jvmsimulator.java

?? 《深入java虛擬機》一書的光盤
?? JAVA
?? 第 1 頁 / 共 2 頁
字號:
/** Copyright (c) 1996-1999 Bill Venners. All Rights Reserved.** This Java source file is part of the Interactive Illustrations Web* Site, which is delivered in the applets directory of the CD-ROM* that accompanies the book "Inside the Java 2 Virtual Machine" by Bill* Venners, published by McGraw-Hill, 1999, ISBN: 0-07-135093-4. This* source file is provided for evaluation purposes only, but you can* redistribute it under certain conditions, described in the full* copyright notice below.** Full Copyright Notice:** All the web pages and Java applets delivered in the applets* directory of the CD-ROM, consisting of ".html," ".gif," ".class,"* and ".java" files, are copyrighted (c) 1996-1999 by Bill* Venners, and all rights are reserved.  This material may be copied* and placed on any commercial or non-commercial web server on any* network (including the internet) provided that the following* guidelines are followed:** a. All the web pages and Java Applets (".html," ".gif," ".class,"* and ".java" files), including the source code, that are delivered* in the applets directory of the CD-ROM that* accompanies the book must be published together on the same web* site.** b. All the web pages and Java Applets (".html," ".gif," ".class,"* and ".java" files) must be published "as is" and may not be altered* in any way.** c. All use and access to this web site must be free, and no fees* can be charged to view these materials, unless express written* permission is obtained from Bill Venners.** d. The web pages and Java Applets may not be distributed on any* media, other than a web server on a network, and may not accompany* any book or publication.** BILL VENNERS MAKES NO REPRESENTATIONS OR WARRANTIES ABOUT THE* SUITABILITY OF THE SOFTWARE, EITHER EXPRESS OR IMPLIED, INCLUDING* BUT NOT LIMITED TO THE IMPLIED WARRANTIES OF MERCHANTABILITY,* FITNESS FOR PARTICULAR PURPOSE, OR NON-INFRINGEMENT.  BILL VENNERS* SHALL NOT BE LIABLE FOR ANY DAMAGES SUFFERED BY A LICENSEE AS A* RESULT OF USING, MODIFYING OR DISTRIBUTING THIS SOFTWARE OR ITS* DERIVATIVES.*/package COM.artima.jvmsim;import java.awt.*;import java.applet.*;/*** An applet that simulates the Java Virtual Machine executing a* sequence of bytecodes.** @author      Bill Venners*/public abstract class JVMSimulator extends Applet implements Runnable {    ColoredLabel explanationLabel = new ColoredLabel("",        Label.CENTER, Color.lightGray);    GrayButton stepButton = new GrayButton(StringTable.step);    GrayButton resetButton = new GrayButton(StringTable.reset);    GrayButton runButton = new GrayButton(StringTable.run);    GrayButton stopButton = new GrayButton(StringTable.stop);    MethodAreaPanel methodAreaPanel;    LocalVarsPanel localVarsPanel;    OperandStackPanel operandStackPanel;    int pcRegister;    int optopRegister;    StackFrame currentFrame;    Method currentMethod;    int bytecodeViewSize;    int[] theProgram;    String[] bytecodeMnemonics;    int maxStack;    int maxLocals;	ExceptionTableEntry[] exceptionTable;	ConstantPoolEntry[] constantPool;	boolean stoppedThreadWhenLeftPage = false;    // If the "run" button is pushed, a separate thread will be invoked that    // will cause the JVM to execute until the "stop" button is pressed.    Thread runner;    final int millisecondDelayBetweenSteps = 250;    public void init() {        theProgram = getTheProgram();        bytecodeMnemonics = getBytecodeMnemonics();        bytecodeViewSize = getBytecodeViewSize();        maxStack = getMaxStack();        maxLocals = getMaxLocals();		exceptionTable = getExceptionTable();		constantPool = getConstantPool();        methodAreaPanel = new MethodAreaPanel(bytecodeViewSize,            theProgram, bytecodeMnemonics);        localVarsPanel = new LocalVarsPanel(maxLocals);        operandStackPanel = new OperandStackPanel(maxStack);        // Set background and layout for the applet panel        setBackground(getAppletBackgroundColor());        setLayout(new BorderLayout(5, 5));        // Initialize the title bar        ColoredLabel title = new ColoredLabel(getAppletTitle(),            Label.CENTER, getTitleColor());        title.setFont(new Font("Helvetica", Font.BOLD, 12));        // Initialize the control panel        Panel controlPanel = new Panel();        controlPanel.setLayout(new BorderLayout(5, 5));        // Build the panel of four buttons        Panel leftButtonPanel = new Panel();        leftButtonPanel.setLayout(new GridLayout(2,2,5,5));        leftButtonPanel.add(stepButton);        resetButton.disable();        leftButtonPanel.add(runButton);        leftButtonPanel.add(resetButton);        leftButtonPanel.add(stopButton);        stopButton.disable();        // Initialize the explanation label        explanationLabel.setBackground(getExplanationLabelColor());        Font plainFont = new Font("TimesRoman", Font.ITALIC, 12);        explanationLabel.setFont(plainFont);        // Place the four button panel and explanation label onto        // the control panel        controlPanel.add("West", leftButtonPanel);        controlPanel.add("Center", explanationLabel);        // Initialize the panel that holds both the stack and        // the method area (the twoParts panel)        Panel twoParts = new Panel();        twoParts.setLayout(new GridLayout(1, 2, 5, 5));        Panel stackPanel = new Panel();        stackPanel.setLayout(new GridLayout(2, 1, 5, 5));        stackPanel.add(localVarsPanel);        stackPanel.add(operandStackPanel);        stackPanel.setBackground(getStackAreaColor());        methodAreaPanel.setBackground(getMethodAreaColor());        // Add stack and methodarea panels to the twoParts panel        twoParts.add(stackPanel);        twoParts.add(methodAreaPanel);        // Place the title, controlPanel, and twoParts onto the applet        // panel.        add("North", title);        add("South", controlPanel);        add("Center", twoParts);        // Place the bytecodes into a byte array.        byte[] ba = new byte[theProgram.length];        for (int i = 0; i < ba.length; ++i) {            ba[i] = (byte) theProgram[i];        }        // Pass byte array to new StackFrame        currentFrame = new StackFrame(maxStack, maxLocals);        currentMethod = new Method(currentFrame, ba, exceptionTable, constantPool);        resetState();        updateStateDisplay();    }    // If they leave the page, stop a Run button press, then restart    // automatically if they come back. In effect, leaving the page is like clicking    // the Stop button. Returning to the page is like clicking the Run button.    public void start() {        if (runner == null && stoppedThreadWhenLeftPage) {            stopButton.enable();            runButton.disable();            stepButton.disable();            resetButton.disable();            stoppedThreadWhenLeftPage = false;            runner = new Thread(this);            runner.start();        }    }    public void stop() {        runButton.enable();        stepButton.enable();        resetButton.enable();        stopButton.disable();        if (runner != null) {            // Synchronize on currentMethod to allow the thread            // to complete execution of the current instruction before            // killing it.            synchronized (currentMethod) {                runner.stop();            }            runner = null;            stoppedThreadWhenLeftPage = true;        }    }    // Pushing the Reset button will cause resetState() to be executed, which will    // reset all the data to its initial values.    void resetState() {        pcRegister = 0;        optopRegister = 0;        currentMethod.resetState();    }    // updateStateDisplay writes the current state of the JVM to the UI.    void updateStateDisplay() {        methodAreaPanel.updateProgramCounter(pcRegister);        updateExplanationText();        localVarsPanel.updateView(currentFrame.getLocalVars());        operandStackPanel.updateView(currentFrame.getOptop(),            currentFrame.getOperandStack());    }    public void run() {        while (true) {            try {                pcRegister = currentMethod.executeNextInstruction();            }            catch (BreakpointException be) {                // On a breakpoint, kill the thread.                runButton.enable();                stepButton.enable();                resetButton.enable();                stopButton.disable();                if (runner != null) {                    Thread runnerAboutToStop = runner;                    runner = null;                    runnerAboutToStop.stop();                }            }            updateStateDisplay();            try {                Thread.sleep(millisecondDelayBetweenSteps);            }            catch (InterruptedException e) {            }        }    }    // updateExplanationText() prints out a line of text to the bottom of the    // applet that describes the next opcode to execute.    private void updateExplanationText() {        int nextOpCode = theProgram[pcRegister];        switch (nextOpCode) {        case OpCode.AALOAD:            explanationLabel.setLabelText(StringTable.aaloadText);            break;        case OpCode.ALOAD_0:            explanationLabel.setLabelText(StringTable.aload_0Text);            break;        case OpCode.ALOAD_1:            explanationLabel.setLabelText(StringTable.aload_1Text);            break;        case OpCode.ALOAD_2:            explanationLabel.setLabelText(StringTable.aload_2Text);            break;        case OpCode.ALOAD_3:            explanationLabel.setLabelText(StringTable.aload_3Text);            break;        case OpCode.ASTORE:            explanationLabel.setLabelText(StringTable.astoreText);            break;        case OpCode.ASTORE_0:            explanationLabel.setLabelText(StringTable.astore_0Text);            break;        case OpCode.ASTORE_1:            explanationLabel.setLabelText(StringTable.astore_1Text);            break;        case OpCode.ASTORE_2:            explanationLabel.setLabelText(StringTable.astore_2Text);            break;        case OpCode.ASTORE_3:            explanationLabel.setLabelText(StringTable.astore_3Text);            break;        case OpCode.BIPUSH:            explanationLabel.setLabelText(StringTable.bipushText);            break;        case OpCode.BREAKPOINT:            explanationLabel.setLabelText(StringTable.breakpointText);            break;        case OpCode.DCMPG:            explanationLabel.setLabelText(StringTable.dcmpgText);            break;        case OpCode.DCONST_0:            explanationLabel.setLabelText(StringTable.dconst_0Text);            break;        case OpCode.DCONST_1:            explanationLabel.setLabelText(StringTable.dconst_1Text);            break;        case OpCode.DDIV:            explanationLabel.setLabelText(StringTable.ddivText);            break;        case OpCode.DLOAD:            explanationLabel.setLabelText(StringTable.dloadText);            break;        case OpCode.DLOAD_0:            explanationLabel.setLabelText(StringTable.dload_0Text);            break;        case OpCode.DLOAD_2:            explanationLabel.setLabelText(StringTable.dload_2Text);            break;

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产精品狼人久久影院观看方式| 国产精品99久久久久久似苏梦涵| 免费成人在线影院| 成人av免费在线观看| 欧美不卡一区二区三区| 亚洲丰满少妇videoshd| 99久久精品国产精品久久| 久久久国际精品| 免费成人深夜小野草| 91久久精品一区二区二区| 国产精品视频一二| 九九国产精品视频| 欧美日本韩国一区| 一区二区三区中文字幕精品精品 | 久久精品国产精品亚洲精品| 色又黄又爽网站www久久| 国产欧美日韩综合| 激情综合五月婷婷| 日韩无一区二区| 日日夜夜免费精品视频| 在线免费观看不卡av| 综合自拍亚洲综合图不卡区| 高清不卡一二三区| 国产日产欧美一区二区三区| 极品尤物av久久免费看| 日韩欧美国产三级| 国产最新精品免费| 精品入口麻豆88视频| 久草这里只有精品视频| 欧美岛国在线观看| 精品一区二区三区在线观看| 精品欧美黑人一区二区三区| 精品无人码麻豆乱码1区2区| 欧美xingq一区二区| 老司机精品视频线观看86| 精品三级在线看| 国产精品系列在线观看| 国产欧美日韩三区| 一本一道久久a久久精品| 自拍视频在线观看一区二区| 91免费版pro下载短视频| 亚洲精品国产无天堂网2021| 色网综合在线观看| 亚洲国产一区二区a毛片| 欧美一二三在线| 国产精品一二三四| 国产精品不卡视频| 欧美手机在线视频| 蜜臀av性久久久久蜜臀aⅴ| 欧美大片顶级少妇| eeuss鲁一区二区三区| 亚洲色图视频网站| 91精品国产综合久久久久久| 韩国成人精品a∨在线观看| 中文字幕av在线一区二区三区| av成人免费在线观看| 亚洲码国产岛国毛片在线| 欧美日韩黄视频| 激情综合网天天干| 亚洲丝袜美腿综合| 欧美成人a在线| 91麻豆swag| 麻豆一区二区在线| 亚洲精品亚洲人成人网在线播放| 欧美久久久久久久久| 国产精品一二三| 最好看的中文字幕久久| 日韩欧美亚洲另类制服综合在线| 成人中文字幕合集| 青青青爽久久午夜综合久久午夜| 中文字幕亚洲不卡| 精久久久久久久久久久| 国产一区 二区| 综合婷婷亚洲小说| 日韩视频在线永久播放| 欧美性受极品xxxx喷水| 六月丁香婷婷久久| 亚洲精品日韩一| 久久久久久久久久久黄色| 在线观看亚洲一区| 成人午夜电影网站| 精品在线你懂的| 亚洲福中文字幕伊人影院| 欧美激情综合在线| 日韩欧美久久久| 在线观看精品一区| 成人免费观看男女羞羞视频| 麻豆精品新av中文字幕| 亚洲一区二区三区不卡国产欧美| 国产欧美综合色| 欧美一激情一区二区三区| 91久久精品一区二区| 成人一区二区视频| 国产在线精品免费| 免费在线看一区| 图片区小说区区亚洲影院| 亚洲欧洲精品一区二区三区| 久久综合色综合88| 日韩欧美国产wwwww| 欧美片网站yy| 欧美日韩在线精品一区二区三区激情 | 久久先锋资源网| 日韩亚洲电影在线| 欧美精品123区| 欧美写真视频网站| 在线中文字幕一区| 色婷婷综合久久久久中文一区二区 | 欧美一级在线观看| 欧美日韩电影在线播放| 在线观看视频一区| 欧美日韩国产一区| 99久久精品费精品国产一区二区| 成人精品国产一区二区4080| 成人永久免费视频| av男人天堂一区| 色婷婷狠狠综合| 欧美色图天堂网| 欧美美女一区二区三区| 欧美日韩久久久| 91精品国产综合久久久久久漫画| 欧美一区二区三区思思人| 日韩一级视频免费观看在线| 精品国产欧美一区二区| 亚洲精品一区二区三区99| 精品国产91洋老外米糕| 久久久亚洲国产美女国产盗摄| 亚洲国产高清在线观看视频| 中文字幕av一区二区三区| 亚洲天堂网中文字| 亚洲另类在线制服丝袜| 午夜久久久影院| 国产一区二区三区免费在线观看| 国产成人h网站| 91久久一区二区| 91麻豆精品国产91久久久资源速度| 日韩一区二区在线免费观看| 久久网这里都是精品| 亚洲视频一区二区在线观看| 亚洲国产成人高清精品| 精品亚洲欧美一区| 99久久精品免费精品国产| 欧美日韩国产高清一区| 精品国产sm最大网站| 亚洲欧美电影院| 久久草av在线| 91丨porny丨在线| 欧美一区二区三区在线观看| 国产欧美综合在线观看第十页| 依依成人综合视频| 国产真实乱子伦精品视频| 97久久久精品综合88久久| 91精品国产一区二区| 国产精品福利在线播放| 首页欧美精品中文字幕| 高清av一区二区| 欧美一区二区三区色| 成人免费一区二区三区视频| 麻豆91小视频| 91国偷自产一区二区三区观看| 日韩精品一区国产麻豆| 一区二区三区在线观看视频| 韩国女主播成人在线观看| 欧美三级中文字幕在线观看| 日本一区二区三区久久久久久久久不 | 欧美mv日韩mv国产网站| 亚洲精品国产高清久久伦理二区| 韩国三级在线一区| 欧美剧情电影在线观看完整版免费励志电影| 精品国内二区三区| 亚洲成人tv网| 91成人免费电影| 中文字幕一区二区三区精华液| 精品中文字幕一区二区| 欧美在线看片a免费观看| 中文av一区二区| 国内久久精品视频| 欧美大片一区二区| 亚洲超丰满肉感bbw| 91色.com| 国产精品乱子久久久久| 国产一区二区三区免费看| 精品国免费一区二区三区| 男人操女人的视频在线观看欧美| 欧美撒尿777hd撒尿| 亚洲精品国产精品乱码不99| 97久久久精品综合88久久| 国产精品理伦片| 99久久精品久久久久久清纯| 国产精品天干天干在观线| 国产精品综合av一区二区国产馆| 欧美一区二区精美| 日韩电影在线免费观看| 欧美日韩久久久一区| 香蕉影视欧美成人| 欧美日韩成人在线| 视频一区二区三区中文字幕| 在线成人高清不卡| 日韩 欧美一区二区三区| 911国产精品| 卡一卡二国产精品|