2016CCF-CCSP竞赛:第1题-虚拟机设计(共3题)

题目概览:

  • 定义一种类似于汇编的语言X,只有8种基本指令。
  • Part1:用高级语言编写虚拟机,模拟运行X语言代码。(105分)
  • Part2:编写X语言代码,在虚拟机上完成三个简单的任务。(45分)


Part1:

  • 内存

16位虚拟机,内存地址从0000到FFFF。
    规定其中[3000,B000)是数据段,可以读写。
    小端存储

  • 寄存器

四个16位寄存器AX,BX,CX,DX

  • 数据

所处理的数据均为16位无符号整数


Part1 - 操作数:

  • 立即数

16位无符号整数,在指令中以4位十六进制数的形式出现。

  • 寄存器

AX,BX,CX,DX

  • 内存

立即数直接寻址:T0C20
    寄存器间接寻址:TAX


Part1 - 八种指令:

  • RUN  标识程序的开始
  • STOP 标识程序正常结束
  • ECHO A 将操作数A中的值输出
  • ADD A B A+=B,溢出直接忽略,A不能是立即数
  • INC A A+=1,溢出直接忽略,A不能是立即数
  • MOV A B A=B,A不能是立即数
  • CMP和JMP类指令


Part1 - 跳转类指令:

  • CMP A B 

本题只涉及加法,未考察减法操作,故单独设立一个CMP指令,比较操作数A 和B中的值的大小关系,仅用做条件跳转的依据。

  • 无条件跳转 JMP X
  • 条件跳转  J?? X

JL,JG,JE,JNL,JNG,JNE

  • 操作数X中的值为跳转目的指令的行号

Part1 - 指令格式要求:

  • 每行一条指令,指令内部不同部分之间仅用一个空格进行分隔,不允许有多余空格。
  • 第一行指令是RUN,最后一行指令是STOP,程序中不允许有其它的RUN和STOP。
  • 指令中所有的字母均为大写。
  • 出于对时钟周期的考量,一条指令中不能同时存在两个内存操作数。

Part1 - 异常情况:

  • 虽然Part1给出的程序均满足格式要求,但运行时仍会遇到以下四种异常情况。
  • 存取非法  只能读写数据段
  • 耗时过长  最多执行100万条次指令
  • 跳转错误  只能跳转到2~N行
  • CMP缺失  条件跳转前没有CMP

Part1 - 异常情况:

  • 耗时过长是在指令执行结束后判断
  • 同一条指令执行时可能涉及多种错误

条件跳转 JG T0000

  • 根据内在逻辑关系,定义优先级如下:

CMP缺失 > 存取非法 > 跳转错误

Part1:

  • 输入

8种指令编写的一段程序,不超过100行。

  • 输出

每个顺利执行的ECHO语句输出一行,4位十六进制整数,字母大写。
    如果程序异常退出,再输出一行提示信息
    存取非法:ACCESS_VIOLATION
    耗时过长:TLE
    跳转错误:RUNTIME_ERROR
    CMP缺失:CMP_MISSING

Part1 - 测试用例:

  • 总共15组测试用例,105分平均分配。
  • 1~5组数据:不涉及内存操作,不涉及跳转操作。
  • 6~10组数据:涉及内存操作,不涉及跳转操作。
  • 11~15组数据:两种操作均有。

Part1 - 测试用例:

  • 1~5:均能正常结束。
  • 6~10:全部会触发ACCESS_VIOLATION,其中9、10涉及访问AFFF。
  • 11:CMP缺失
  • 12、13:耗时过长
  • 14:跳转错误
  • 15:正常结束

Part2:

  • 用这8种指令编写程序,在虚拟机上完成三个子任务。
  • Special Judge:

代码40行以内
    无格式错误
    STOP正常结束
    结果正确

  • 无需读入数据,已经内置于内存和寄存器中
  • 通过ECHO指令将答案输出
  • 所有的数据默认为16位无符号整数

Part2:

  • Sample Task

已知A和B,输出A和B的较小值

  • TaskA

输出A1……AN的最大值

  • TaskB

输出A1……AN的不同的值的个数,<=5*10^3

  • TaskC

输出组合数C(N,M)%65536的结果,<=2*10^2

(本文根据官方提供的PPT改版)

2016CCF-CCSP竞赛:第1题-虚拟机设计(共3题)相关推荐

  1. 【剑指offer】leetcode刷题 -- Python3实现 -- 共75题(更新中)

    目录: 1. 剑指 Offer 03. 数组中重复的数字 -- 简单2. 剑指 Offer 04. 二维数组中的查找 -- 简单3. 剑指 Offer 05. 替换空格 -- 简单4. 剑指 Offe ...

  2. 【LeetCode】智商题 brainteaser(共3题)

    [292]Nim Game [319]Bulb Switcher [777]Swap Adjacent in LR String (2019年2月13日,谷歌tag) 给了两个字符串start 和en ...

  3. 无线联网功能硬件模块无法拆除的计算机禁止,2021年保密知识竞赛抢答题库及答案(共120题).docx...

    2021年保密知识竞赛抢答题库及答案(共120题) 1 涉密计算机不得安装使用无线键盘.无线鼠标.蓝牙.红外和无线网卡.答案:正确2 涉密便携式计算机应当拆除具有无线联网功能的硬件模块.答案:正确3 ...

  4. 2021年全国大学生电子设计竞赛——信号失真度测量装置(A题)——设计过程分享(1)

    一.前言        这边来分享一下这次国赛的A题软硬件设计过程,本次分享会拆分成几篇博客进行分享,这几篇博客大体会采用时间顺序来进行,来纪念这次国赛的经历,博客里面会涉及本次参赛的软硬件设计思路和 ...

  5. 计算机高水平竞赛,计算机学院学子在CCSP竞赛中荣获佳绩

    10月16日,由中国计算机学会主办的2020年CCF CCSP竞赛正式拉开战幕,本次参赛的1041名选手来自清华大学.北京大学.浙江大学等全国67所高校,在全国各CCF CSP认证点进行现场较量.比赛 ...

  6. 2017年全国大学生电子设计大赛A题(微电网模拟系统)

    小编参加过三届全国大学生电子设计竞赛,做的均为电源题目,故留下此电源题提详细的方案和设计思路步骤,供后来者学习取经,如有不足之处欢迎留言提问.点击此处访问小编的个人小站:www.zhiguoxin.c ...

  7. 2018年全国大学生电子设计大赛E题(变流器负载试验中的能量回馈装置)

    小编参加过三届全国大学生电子设计竞赛,做的均为电源题目,故留下此电源题提详细的方案和设计思路步骤,供后来者学习取经,如有不足之处欢迎留言提问.点击此处访问小编的个人小站:www.zhiguoxin.c ...

  8. 2019全国大学生电子设计大赛H题 模拟电磁炮系统全国一等奖

    2019全国大学生电子设计大赛H题 模拟电磁炮系统全国一等奖 作者 xxx 队友 阿华 狗子 (想要比赛指导的可以xian鱼搜索 电子设计竞赛国一竞赛指导(发布人为晨星)) (想要源码和我比赛时候准备 ...

  9. 2017全国大学生电子设计大赛B题 | 板球控制系统(二)图像算法相关

    2017全国大学生电子设计大赛B题 | 板球控制系统(二)图像算法相关 转载请注明出处. 我翻看了很多现有教程以及相关的开源贴,发现大家对于技术的解释都很隐晦,真正的问题没解释清楚,真正的技术也没体现 ...

最新文章

  1. sharedUserId
  2. socket.io笔记
  3. 配置zabbix监控windows,cmd运行报错cannot connect to Service Manager: [0x00000005]
  4. Centos6.10源码部署zabbix-3.2.6
  5. 重磅来袭,2018 年 6 月编程语言排行榜
  6. Ubuntu学习小结(一) 基础知识,系统安装,软件安装,解压缩
  7. layuiajax提交表单控制层代码_Ninja Forms:免费的联系表单插件,却提供了付费表单才有的功能【视频+图文】...
  8. 【月报】Java知音的一月汇总
  9. thymeleaf 基础教程-搭建杂货铺项目环境(一)
  10. 基于JAVA+SpringBoot+Mybatis+MYSQL的智慧水产养殖系统
  11. python的变量名可以是中文吗_Python中用中文变量名、函数名,会影响性能吗?
  12. 关于“单元组”数量的计算
  13. MTK如何烧录IMEI码(俗称串号)
  14. 阿里巴巴中国站搜索店铺列表 API
  15. word2013、word2016、word2019标题序号变黑色竖线解决方法
  16. android调用录音编程,Android 调用MediaRecorder录音
  17. 算法工程师分类与要求
  18. 微信动态表情保存到手机相册
  19. 拼多多分类ID搜索商品数据分析接口(商品列表数据,商品销量数据,商品详情数据)代码对接教程
  20. oracle数据库中spool的作用,Oracle中Spool命令如何使用 Oracle中Spool命令使用方法

热门文章

  1. Java并发编程之Lock
  2. C# WinForm开发系列
  3. elementUI中复选框checkbox的使用
  4. websocket 带头部信息请求 header_BeetleX之Websocket协议分析详解
  5. error 系统错误 错误码10007_工业界纠错系统
  6. mysql单向加密_MariaDB(Mysql)双向加密与单向加密 | 彬菌
  7. 学习java 第三天 数据类型以及存储大小取值范围 (one 大白 (●—●))
  8. 不同角色给rules重新赋值校验规则
  9. php 5.5编译安装教程,CentOS 5.5编译安装Nginx1.0.15+MySQL5.5.23+PHP5.3.10
  10. Python基础——continute与break(循环控制)