# lab6
[TOC]
## lab0l (lab1 L version)
### 实现思路
- 使用`short`类型变量模拟`16bit`的寄存器
- 使用`do while`循环来模拟`BR`指令
- 使用`return`模拟`HALT`指令
- 函数的返回值为运算的结果,参数为预先存在寄存器中的输入
### 最终代码
```c++
short lab0l(short a, short b)
{
short result = 0;
do
{
result += a;
b--;
} while (b != 0);
return result;
}
```
## lab0p (lab1 P version)
### 实现思路
- 使用`short`类型变量模拟`16bit`的寄存器
- 使用`do while`循环和`if`来模拟`BR`指令
- 使用`&`运算符模拟`AND`指令
- 使用`return`模拟`HALT`指令
- 函数的返回值为运算的结果,参数为预先存在寄存器中的输入
### 最终代码
```c++
short lab0p(short a, short b)
{
short bit = 1;
short result = 0;
do
{
if ((b & bit) != 0)
result += a;
a += a;
bit += bit;
} while (bit != 0);
return result;
}
```
## fib (lab2 fibonacci)
### 实现思路
- 使用`short`类型变量模拟`16bit`的寄存器
- 使用`do while`循环来模拟`BR`指令
- 使用`&`运算符模拟`AND`指令
- 使用`return`模拟`HALT`指令
- 函数的返回值为运算的结果,参数为预先存在寄存器中的输入
### 最终代码
```c++
short fib(short n)
{
short f1 = 1, f2 = 1, f3 = 2;
short result = 0;
short mask = 0;
short i = 10;
do
{
mask = mask * 2;
mask++;
i--;
} while (i>0);
do
{
result = f1;
short f4 = (2 * f1 + f3) & mask;
f1 = f2;
f2 = f3;
f3 = f4;
n--;
} while (n >= 0);
return result;
}
```
## fib-opt (lab3 fibonacci)
### 实现思路
- 使用`short`类型变量模拟`16bit`的寄存器
- 使用`do while`循环和`if`来模拟`BR`指令
- 使用`&`运算符模拟`AND`指令
- 使用`return`模拟`HALT`指令
- 函数的返回值为运算的结果,参数为预先存在寄存器中的输入
### 最终代码
```c++
short fib_opt(short n)
{
short f1 = 1, f2 = 1, f3 = 2;
short result = 0;
n-=2;
if(n<0) return 1;
if(n==0) return 2;
do
{
result = 2 * f1 + f3;
f1 = f2;
f2 = f3;
f3 = result;
n--;
} while (n > 0);
return result & 1023;
}
```
## rec (lab4 task1 rec)
### 实现思路
- 使用`short`类型数组`R[8]`参数模拟`16bit`的寄存器
- 使用`if`来模拟`BR`指令
- 使用两个函数来模拟子程序的运行与递归调用
- 使用参数`memory`模拟`x3019`处的内存
- 使用`return`模拟`HALT`指令
- 函数的返回值为运算的结果
### 最终代码
```c++
void rec_subroutine(short R[8], short &memory)
{
R[2] += 1;
R[0] += 1;
R[1] = memory;
R[1] += -1;
memory = R[1];
if (R[1] != 0)
rec_subroutine(R, memory);
R[2] -= 1;
}
void rec(short R[8], short &memory)
{
R[2] = 0x300f;
R[0] = 0;
rec_subroutine(R, memory);
}
```
## mod (lab4 task2 mod)
### 实现思路
- 使用`short`类型变量模拟`16bit`的寄存器
- 使用`do while`循环、`if`和`三目运算符`来模拟BR指令
- 使用`&`运算符模拟`AND`指令
- 使用`return`模拟`HALT`指令
- 函数的返回值为运算的结果,参数为预先存在内存中的输入
### 最终代码
```c++
short mod(short num)
{
do
{
short bit = 8;
short times = 1, multiple = 0;
do
{
if ((num & bit) != 0)
multiple += times;
bit += bit;
times += times;
} while (bit > 0);
num = multiple + (num & 7);
} while (num - 7 > 0);
num = num == 7 ? num - 7 : num;
return num;
}
```
## prime (lab5 prime)
### 实现思路
- 使用`short`类型变量模拟`16bit`的寄存器
- 使用`do while`循环和`if`来模拟BR指令
- 使用`return`模拟`HALT`指令
- 函数的返回值为运算的结果,参数为预先存在寄存器中的输入
### 最终代码
```c++
short prime(short num)
{
short i = 2;
short result = 1;
short sqrt = 1;
do
{
sqrt += 2 * i - 1;
if (num - sqrt < 0)
return result;
short temp = num;
do
{
temp -= i;
} while (temp > 0);
if (temp == 0)
result -= 1;
i++;
} while (result > 0);
return result;
}
```
## Questions
Q:how to evaluate the performance of your own high-level language programs
A:估计算法的时间空间复杂度
Q:why is a high-level language easier to write than LC3 assembly
A:高级语言更接近人类使用的自然语言和数学公式
Q:what instructions do you think need to be added to LC3? (You can think about the previous experiments and what instructions could be added to greatly simplify the previous programming)
A:右移运算
Q:how to evaluate the performance of your own high-level language programs
A:位运算的使用
没有合适的资源?快使用搜索试试~ 我知道了~
(源码)基于C++的LC3模拟器与汇编器.zip

共66个文件
txt:16个
md:11个
pdf:8个

0 下载量 141 浏览量
2025-07-27
04:18:35
上传
评论
收藏 1.36MB ZIP 举报
温馨提示
# 基于C++的LC3模拟器与汇编器 ## 项目简介 本项目是一个基于C++的LC3模拟器与汇编器,旨在模拟LC3计算机的运行过程并实现LC3汇编语言的编译。LC3是一种类似于RISC架构的汇编语言,广泛用于计算机系统教学中。项目包含多个实验,涵盖了从基础的算术运算到复杂的递归处理、斐波那契数列计算以及LC3汇编器的实现。 ## 项目的主要特性和功能 1. 基础算术运算 lab0l函数计算两个数的累加和。 lab0p函数实现某种二进制位运算的累加计算。 2. 斐波那契数列计算 fib函数计算斐波那契数列中的特定项,采用迭代方式。 fibopt函数优化后的斐波那契数列计算函数,加速计算过程。 3. 递归处理 recsubroutine函数递归子程序,用于递归调用处理数组和内存变量。 rec函数调用recsubroutine进行递归处理的封装器。 4. LC3汇编器
资源推荐
资源详情
资源评论






























收起资源包目录




















































































共 66 条
- 1
资源评论


静默小音箱
- 粉丝: 2327
上传资源 快速赚钱
我的内容管理 展开
我的资源 快来上传第一个资源
我的收益
登录查看自己的收益我的积分 登录查看自己的积分
我的C币 登录后查看C币余额
我的收藏
我的下载
下载帮助


最新资源
- 运动后的该如何补充营养.pptx
- 基础垫层、防水保护层.doc
- 非正常情况应急处理.ppt
- 基于 WordPress Mini Program API 插件创建的 WordPress 小程序之 Travel 主题
- 班会课件-诚信伴我行.ppt
- 运用QC方法控制大体积砼施工质量.doc
- 制度是基础+执行是关键+监督是保障.doc
- three-platformize微信小程序demo.zip
- 中国南方航空大厦.doc
- 微信小程序-仿今日头条.zip
- 北京某住宅6#楼质量保修书.doc
- 潜水搅拌器的选用.doc
- 《倾心短视频》微信小程序.zip
- EPC工程管理实例.ppt
- 城市污水的截流与处理专题报告.ppt
- 岩土勘察报告范本.doc
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈



安全验证
文档复制为VIP权益,开通VIP直接复制
