分析程序

分析程序,第1张

21题:

(R0)=7F 释:执行INC R0的结果 R0 ←7E+1

(7E)=0H 释:执行第一条INC @R0的结果 0FFH+1=100H,字长8位、溢出;

(7F)=3AH 释:执行第二条INC @R0的结果 39H+1

22题:

(1)执行完程序需所时间:(1+1+1+2)x(2μs)=10μs 释:每机器周期2μs

(2) 寻址方式:立即寻址

(3) NOP指令:空 *** 作,起“逗留”延时1个机器周期作用

23题:

(PC)= 5678H 释:子程序入口地址

(61H)= 36H 释:暂存于堆栈的主程序下一条指令地址低8位

(62H)= 12H 释:暂存于堆栈的主程序下一条指令地址高8位

Stackjava

import javautilconcurrentlocksCondition;

import javautilconcurrentlocksLock;

import javautilconcurrentlocksReentrantLock;

public class Stack {

    

    private int[] data;

    private int index;

    private Lock lock;

    private Condition moreSpace;

    private Condition moreEelment;

    

    public Stack(int size){

        thisdata = new int[size];

        thisindex = 0;

        thislock = new ReentrantLock();

        thismoreSpace = locknewCondition();

        thismoreEelment = locknewCondition();

    }

    

    public void push(int value){

        locklock();

        try {

            while(index == datalength){

                moreSpaceawait();

            }

            data[index++] = value;

            moreEelmentsignalAll();

        } catch (InterruptedException e) {

            eprintStackTrace();

        } finally {

            lockunlock();

        }

    }

    

    public int popup(){

        locklock();

        int value = 0;

        try {

            while(index == 0){

                moreEelmentawait();

            }

            value = data[--index];

            moreSpacesignalAll();

        } catch (InterruptedException e) {

            eprintStackTrace();

        } finally {

            lockunlock();

        }

        return value;

    }

}

写入线程 WriteStackjava

import javautilRandom;

public class WriteStack implements Runnable {

    private Stack stack;

    

    public WriteStack(Stack stack){

        thisstack = stack;

    }

    @Override

    public void run() {

        Random r = new Random(SystemcurrentTimeMillis());

        for(int i = 0;i < 10; i++){

            int value = rnextInt(500);

            stackpush(value);

            Systemoutprintf("Write: push %d in stack\n",value);

            try {

                Threadsleep(rnextInt(500));

            } catch (InterruptedException e) {

                eprintStackTrace();

            }

        }

    }

}

读取线程 ReadStackjava

import javautilRandom;

public class ReadStack implements Runnable {

    private Stack stack;

    

    public ReadStack(Stack stack){

        thisstack = stack;

    }

    

    @Override

    public void run() {

        Random r = new Random(SystemcurrentTimeMillis());

        for(int i = 0;i < 10; i++){

            int value = stackpopup();

            Systemoutprintf("Read: popup an element %d\n",value);

            try {

                Threadsleep(rnextInt(500));

            } catch (InterruptedException e) {

                eprintStackTrace();

            }

        }

    }

}

主测试线程 StackExamplejava

public class StackExample {

    public static void main(String[] args) throws InterruptedException {

        Stack stack = new Stack(5);

        WriteStack writeStack = new WriteStack(stack);

        ReadStack readStack = new ReadStack(stack);

        

        Thread writeThread = new Thread(writeStack);

        Thread readThread = new Thread(readStack);

        writeThreadstart();

        readThreadstart();

    }

}

以上就是关于分析程序全部的内容,包括:分析程序、用java编写程序,利用线程同步编写一个栈 *** 作程序,包括数据的进栈和出栈。、等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/zz/9514932.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-04-29
下一篇2023-04-29

发表评论

登录后才能评论

评论列表(0条)

    保存