- 博客(21)
- 收藏
- 关注
原创 嵌入式系统应用——Linux环境下C编程
要求分成 4 个文件:一个头文件 myhead.h、一个进行加法运算的 myadd.c 文件、一个进行除法运算的 mydiv.c 文件和一个求出最终结果并打印的myresult.c 文件。• 使用 make 工具生成可执行文件 myresult,如果出错,检查修改源文件及 Makefile,重新编译测试,直到得到可执行文件;代码的功能为输出倒序main函数中定义的字符串,但代码有错误,利用GDB进行调试找出错误并修正,再编译运行。使用Make工具编译前面的hello.c文件,并查看编译结果和执行结果。
2025-05-21 11:22:15
665
原创 嵌入式系统应用——开发环境搭建
在虚拟机工具VMware的安装过程中,虽然按照步骤操作较为顺利,但对于桥接模式等网络设置的原理有了更深入的理解,明白了不同网络模式对虚拟机网络通信的影响。在未来的学习和实践中,我将继续深入学习嵌入式系统开发知识,不断提升自己的技能水平。VMware虚拟机,指由VMware模拟出来的一台虚拟的计算机,也即逻辑上的一台计算机,使用VMware工具,用户可以同时运行Linux各种发行版、Dos、Windows各种版本,Unix等,甚至可以在同一台计算机上安装多个Linux发行版、多个Windows版本。
2025-05-19 10:55:26
960
原创 计算机系统机构——Tomasulo算法实验报告
周期6:取出第六条指令ADD.D F6,F8,F2,因为所需数据都已经在之前的周期中写回结果,所以第三条和第四条指令在第六个周期开始执行并在指令状态中更新,相关的操作数和操作符被存入保留站,同理因为F8的结果正在由Sub执行,所以Qj先写为Sub所在的保留站Add1,同时在寄存器表中F6(第六条指令将要写入的寄存器)的改变Qi为指令执行的保留站号Add2。指令1 L.D,指令2 L.D,指令4 SUB.D,指令6 ADD.D,指令3 MUL.D,指令5 DIV.D。MULT指令继续执行。
2025-05-17 10:52:25
844
原创 计算机系统结构——Cache性能分析
选择不同的Cache块大小,包括:16B,32B,64B,128B,256B,对于Cache的各种容量,包括:2KB,8KB,32KB,128KB,512KB,分别执行模拟器(单击“执行到底”按钮即可执行),然后在表A.4.4中记录各种情况下的不命中率。3. 可以设置的参数包括:是统一Cache还是分离Cache,Cache的容量,块大小,相联度,替换算法,预取策略,写策略,写不命中时的调块策略。在Cache容量较小时,LRU算法的不命中率低于随机算法,当Cache容量较大时,两者差距不明显。
2025-05-14 21:23:49
2115
原创 计算机体系结构——流水线及流水线中的冲突
发生了RAW(先写后读)冲突的周期:4、6、7、9、10、13、14、17、18、20、21、25、26、28、29、32、33、36、37、39、40、44、45、47、48、51、52、55、56、58、59。),然后分别以单步执行一个周期、执行多个周期、连续执行、设置断点等的方式运行程序,观察程序的执行情况,观察CPU中寄存器和存储器的内容的变化,特别是流水寄存器内容的变化。(5)记录数据冲突引起的停顿时钟周期数以及程序执行的总时钟周期数,计算停顿时钟周期数占总执行周期数的百分比。
2025-05-12 10:39:43
893
原创 汇编语言与接口技术——跑马灯
这个过程提高了我们的程序调试能力,也让我们更深入地理解了编程中的错误处理。我们通过编写程序来控制LED灯的亮灭,这让我们明白了硬件是如何通过软件来控制的。3、在实验的后期,我们可能会发现我们的代码有优化空间。通过优化代码,我们可以让程序运行得更快,占用更少的内存,这对于资源有限的单片机来说是非常重要的。设置堆栈指针,LED灯的初始状态传给P2口,启动T0计时,LED灯更新后的状态传给P2口,循环码控制左移,点亮下一位。MOV P2,A;MOV P2,A;ORG 000BH;
2025-05-09 08:18:32
437
原创 汇编语言与接口技术——冒泡排序算法的实现
(1)在实现PROGRAM_ONE顺序排列和PROGRAM_TWO逆序排列的过程中,深刻体会到汇编语言对程序控制流的精确掌控,包括:条件跳转指令对循环结构的实现,寄存器资源的优化分配,内存地址的直接操作特性。(2)实验验证了汇编语言在嵌入式系统中的独特优势,通过对MOVX指令的实际运用,使我们更加透彻地理解了单片机访问外部存储空间时的时序控制和地址总线操作。(1)实验过程中遇到的调试难点,如:外部存储器访问时序的精确控制,排序过程中数据比较与交换的效率优化,这些问题的解决显著提升了我们的底层调试能力。
2025-05-08 11:14:11
790
原创 汇编语言与接口技术——循环程序设计
(1)通过本次实验,我掌握了循环程序设计的基本方法,包括循环结构的搭建、循环次数的控制以及循环体的优化。在实验过程中,我深入理解了LOOP指令的使用方法,并学会了如何通过寄存器设置循环次数,以及如何利用条件跳转指令实现更灵活的循环控制。(2)在外部存储空间访问方面,我掌握了单片机访问外部存储器的基本流程,包括地址总线的设置、控制信号的产生以及数据的读写时序。通过第一段循环,将一串数值存储到片内存储,通过第二段循环,将片内存储的数据取出,并存储到片外存储,达成逆序拷贝的效果。
2025-05-06 22:52:32
657
原创 汇编语言与接口技术——子程序设计
这个发现促使我深入思考指令系统的设计原理,并掌握了两种有效的解决方案:一是借助累加器A作为中间媒介,先将源寄存器值存入A,再转存到目标寄存器;首先,在算术运算指令的实践过程中,我不仅掌握了基本的加减乘除操作,更重要的是深入理解了累加器A与寄存器之间的协同工作机制。将#8888H分为高位88H和低位88H,低位的88H先和79H相乘,得到的乘积再次分为高位和低位,同样的方法相乘高位的88H和79H,得到的乘积也分为高位和 低位,将第一次乘积的高位和第二次乘积的低位相加,得到中位。
2025-05-02 18:53:12
628
原创 汇编语言与接口技术——算术运算程序设计
首先,在实验过程中,我掌握了汇编语言中常用的算术运算指令,如`ADD`、`SUB`、`MUL`、`DIV`等,并能够正确运用它们进行数据计算。先将数据分为低位、中位、高位,并逐个赋予地址,将地址为0H的数据传送到DPTR数据指针中,将地址为2H的数据传送到累加器A中,读取程序存储器地址 2H 数据 77(低位),使用寄存器R0暂时存储数据,读取程序存储器地址 5H 数据 99(低位),低位相互加,将低位相加后得到的结果放入寄存器R0。MOV R0, A;
2025-04-29 22:15:39
573
原创 计算机网络——抓取RIP报文
首先由Router1准备好的两个RIPv2路由更新报文,通过G0/0/0、G0/0/1、别发送给PC1,Router2,在Router2接收到来自Router1的路由更新报文后,继续将Router1的路由更新报文用剩余的接口转发给PC2、Router1。:观察RIP的请求(Request)、响应(Response)报文交互,分析路由表更新过程,验证RIP的跳数限制(最大15跳)和定时更新机制(如30秒周期更新)。(通常表示直接连接)到达,其度量值(metric)为1(表示跳数),并且没有标签(tag)。
2025-04-26 22:36:00
1059
原创 计算机网络——TCP的三次握手和四次挥手
编号:抓取到报文的编号ID:IP报文首部的标识符seq:序号,进程发送消息的号码。ack:确认号,期望目的进程返回的号码。SYN:TCP标志位每个字段含义如下:(1):源端口号。(2):目的端口号。(3):序号。(4):确认号。(7):标志位。(8):窗口大小。
2025-04-23 13:08:00
1055
原创 Java程序设计——匿名类、异常类与容器类
其次,在异常处理部分,我尝试编写了代码块,但在处理多个异常时出现了捕获顺序错误的问题。首先,在理解匿名类时,起初对其语法和使用场景感到困惑,尤其是如何在接口或抽象类中直接实现匿名类。通过查阅资料和反复练习,我掌握了匿名类的定义方式及其简化代码的优势,例如在事件监听器中直接重写方法,避免了单独创建子类的繁琐。最后,在容器类的使用中,我重点练习了集合类的增删改查操作。在本次实验中,我学习了Java的匿名类、异常处理机制以及常用容器类的使用,收获颇丰,但也遇到了一些问题。3.学会Java常用容器类的使用。
2025-04-18 08:26:45
618
原创 Java程序设计——继承和接口
本次实验围绕Java面向对象编程的核心技术展开,主要目的是掌握类的继承复用、接口设计、多态技术以及常用设计模式的应用,并初步实现Java面向对象的综合设计。的应用中,我遇到了方法调用不明确的问题,经过调试发现是由于父类引用指向子类对象时未正确重写方法。总的来说,本次实验不仅巩固了Java面向对象编程的基础知识,还提高了我的问题分析和解决能力。部分,我按照实验要求定义接口并实现多个类,增强了程序的灵活性和扩展性,例如通过。设计一个抽象的图形类Shape,内含有着色的方法实现,以及求面积的抽象方法;
2025-04-16 13:16:16
662
原创 Java程序设计——类和对象
2. 定义一个描述学生基本情况的类,数据成员包括姓名,学号,数学,英语、计算机和政治的成绩。1、类是对象的模板:在Java中,类定义了对象的基本结构和行为。类定义了对象的属性(字段)和方法。通过定义类,我们可以创建一个或多个对象,每个对象都有类定义的特性和行为。3、多态性:多态性是面向对象编程的一个重要特性,它允许我们使用一个接口来引用不同类型的对象。2、对象是类的实例:对象是类的实例,它们具有类定义的属性和行为。通过使用类的构造函数,我们可以创建一个新的对象。2.初步理解Java类的定义和对象的生成。
2025-04-14 14:42:55
619
原创 Java程序设计——Java编程初步
通过本次实验,我不仅掌握了Java的基本语法和数据类型的使用方法,还熟练掌握了分支、循环等流程控制语句的运用。最大的收获是培养了调试程序的能力和耐心,这为后续学习更复杂的Java特性打下了坚实基础。通过反复调试和查阅资料,我逐渐掌握了Java的语法规则和开发环境的使用技巧。5、编写程序,设计一个员工奖金表,用二维数组bonus[i][j],存放15个员工的6个月奖金。4、编写程序,能根据用户输入行数,打印数字菱形(如当用户输入5时,显示如下图)。1、设计一个简单的Java程序,用于计算圆的周长和面积。
2025-04-12 12:31:57
480
原创 编译原理——语义翻译器的设计
掌握递归和栈的使用:表达式的递归解析让我对递归调用的设计和实现有了更深入的理解,同时也加深了对栈这一数据结构在实际应用中的认识。深入理解编译原理:通过亲手实现一个简单的算术表达式求值器,加深了对编译原理中词法分析、语法分析、语义分析等阶段的理解。问题:语法分析器的递归调用,在实现表达式、项和因子的递归解析时,未能正确处理递归调用的边界条件,导致栈溢出。解决方案:在term函数中,检查除法运算的因子值,如果为0,则调用error函数报错。Token current_token:存储当前解析到的词法单元。
2025-04-09 10:49:04
1013
原创 编译原理——递归下降分析器的设计
遍历每个非终结符和终结符的组合,如果终结符在FIRST集中,则填入相应的产生式。对于FOLLOW集中的每个符号,如果对应的非终结符可以推导出ε,则考虑FOLLOW集中的符号。通过编写预测分析法语法分析程序掌握预测分析法的基本原理、FIRST和FOLLOW集的计算、预测分析表的构造方法以及语法分析法主控程序的设计。输出的结果按照实验内容依次输出消除左递归后的文法,非终结符的FIRST和FOLLOW集,预测分析表、是否为LL(1)文法,以及输出测试字符串利用预测分析法进行语法分析。进一步可以指出出错的位置。
2025-04-07 14:55:21
722
原创 编译原理——递归下降分析器的设计
在编写过程中,特别注意了递归调用的正确使用,以及如何处理空产生式(ε)。解决过程:我在每个解析函数中增加了错误处理逻辑,当遇到不符合文法规则的输入时,记录错误信息并停止解析。(2)提高了编程能力:在实验过程中,我遇到了许多编程上的挑战,如递归调用的正确使用、错误处理逻辑的设计等。(1)加深了对文法的理解:通过编写递归下降分析程序,我更加深入地理解了文法的定义和规则,以及如何通过程序来实现语法分析。(3)培养了问题解决能力:在遇到问题时,我学会了如何分析问题、查找原因,并尝试不同的解决方案。
2025-04-05 11:05:08
826
原创 编译原理——词法分析器的设计
编写一个词法分析器,从输入的源程序(编写的语言为C语言的一个子集)中,识别出各个具有独立意义的单词,即基本保留字、标识符、常数、运算符、分隔符五大类。解决过程:在扫描过程中,当遇到第一个字符为“=”、“>”或“<”时,我检查下一个字符,如果符合多字符运算符的构成,则将它们作为一个整体处理,并赋予相应的种别码。功能:包含识别标识符、保留字、常数、运算符和分隔符的函数,扫描输入字符串,根据字符类型,调用相应的识别函数,返回单词符号的类型和属性值,返回下一个词法单元。词法分析器的功能是输入源程序,输出单词符号。
2025-04-03 09:22:10
1990
1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人