- 博客(16)
- 收藏
- 关注
原创 一、OpenMIPS指令集CPU的ori指令的实现
根据“自己动手写CPU”这本书学习,自己动手实现一个MIPS指令集的CPU。本文章实现了一个ori指令即“或”操作的五级流水线,后续会持续添加其他指令完善此CPU。项目源码。
2024-04-11 15:45:40 1253
原创 System Verilog中的线程fork...join_none的#0时延
join_none语句中使用自动变量来保存变量的拷贝。带初始化的自动变量声明在for循环的线程里运行。在每次循环中,k的一个拷贝被创建并被赋予当前的j值。**在循环完成后,#0阻塞了当前线程,因此三个线程一起运行,打印出各自拷贝的k值。**当线程运行完毕后,在当前时间片已经没有其他时间残留,SV进入下一个语句$display的执行。时延使得当前线程必须等到所有在fork…join_none语句中产生的线程执行完之后才得以运行。join_none里的线程进行调度,但是。
2024-04-08 15:35:42 322
原创 使用Pollard_rho算法分解质因数
Pollard_rho算法是找到一个数的最大质因数,我参考此算法进行修改,实现了将一个数分解为质因数相乘形式的程序。
2024-04-01 15:29:05 625
原创 System Verilog的接口、程序块与断言解析
/ 定义一个序列并不能发挥作用,它必须被断言才能发挥作用// SVA在序列、 属性甚至一个断言的语句中都可以定义时钟。a ##2 b;通常情况下在sequence描述行为,在property描述时钟。
2024-03-14 11:13:36 1137 1
原创 [C++] 虚函数、override、final、父类对象与子类对象详解
" 保护继承 " 和 " 私有继承 " 的 派生类 , 是 不具有 基类 的 完整功能的 , 因为 最终继承 后的派生类 , 无法在 类外部调用 父类的 公有成员 和 保护成员;,在程序运行时期,找到动态绑定到父类指针上的对象(可能是某个子类对象,也可能是父类对象),然后系统内部查一个虚函数表,找到函数的入口地址,从而。纯虚函数是在基类中声明的虚函数,它在基类中没有定义,但要求任何派生类都要定义自己的实现方法。,明确表示子类的这个虚函数是重写父类的,如果子类与父类虚函数的签名不一致,编译器就会报错。
2024-03-06 15:31:40 2436 1
原创 shell脚本学习
Shell 编程跟 JavaScript、php 编程一样,只要有一个能编写代码的文本编辑器和一个能解释执行的脚本解释器就可以了。在一般情况下,人们并不区分 Bourne Shell 和 Bourne Again Shell,所以,像/bin/sh,它同样也可以改为。`#!`` 告诉系统其后路径所指定的程序即是解释此脚本文件的 Shell 程序。
2024-03-01 15:59:01 1151 1
原创 ANTLR词法语法规则
x匹配一个符号,规则或子规则xx y … z匹配一个规则序列(…|…|…)带有多个选项的子规则x?匹配零次或一次xx*匹配零次或多次xx+匹配一次或多次xr:…;定义规则rr:…|…|…;定义一个带有多个选项的规则r标点符号:对标点符号和运算符最简单的处理就是直接在语法规则中引用它们。定义符号的标签规则,例如定义LP来代表左括号。LP : '(';RP : ')';关键字:关键字就是保留的标识符,和标点符号的处理一样,我们可以直接引用也可以定义标签规则。
2024-02-29 14:09:37 1343
原创 systemverilog中的program与module
为避免仿真和设计竞争问题(race condition),systemverilog中引入了program的概念
2024-02-27 14:26:24 1223
原创 python 正则表达式详解
步骤1.用 import re 导入正则表达式模块。2.用 re.compile()函数创建一个 Regex 对象(记得使用原始字符串)。3.向 Regex 对象的 search()方法传入想查找的字符串。它返回一个 Match 对象。4.调用 Match 对象的 group()方法,返回实际匹配文本的字符串。?匹配零次或一次前面的分组。*匹配零次或多次前面的分组。+匹配一次或多次前面的分组。{n}匹配 n 次前面的分组。{n,}匹配 n 次或更多前面的分组。
2024-01-31 14:26:43 1105
原创 C++中的宏
宏分为几种:#,##, \ 在一个宏中的参数前面使用一个#,预处理器会把这个参数转换为一个字符数组,换言之就是:****#是“字符串化”的意思,出现在宏定义中的#是把跟在后面的参数转换成一个字符串。注意:其只能用于有传入参数的宏定义中,且必须置于宏定义体中的参数名前。例如:上述代码给出了基本的使用与空格处理规则,空格处理规则如下:输出:当传入参数名间存在空格时,编译器将会自动连接各个子字符串,用每个子字符串之间以一个空格连接,忽略剩余空格。
2024-01-24 14:24:07 794 1
原创 [C++ Json开源库] nlohmann安装与使用
nolhmann json是一个为现代C++(C++11)设计的JSON解析库,主要特点是:1、易于集成,仅需一个头文件,无需安装依赖2、易于使用,可以和STL无缝对接,使用体验近似python中的json。
2024-01-19 19:53:13 6355 4
原创 Linux下使用ANTLR4解析SystemVerilog代码
Antlr4(Another Tool for Language Recognition)是一款基于Java开发的开源的语法分析器生成工具,能够根据语法规则文件生成对应的语法分析器,广泛应用于DSL构建,语言词法语法解析等领域。
2024-01-18 17:02:40 940 1
原创 C++/C中的‘extern’关键词
C++虽然兼容C,但C++文件中函数编译后生成的符号与C语言生成的不同。因为C++支持函数重载,C++函数编译后生成的符号带有函数参数类型的信息,而C则没有。例如`int add(int a, int b)`函数经过C++编译器生成.o文件后,`add`会变成形如`add_int_int`之类的, 而C的话则会是形如`_add`, 就是说:相同的函数,在C和C++中,编译后生成的符号不同。
2024-01-17 16:11:23 686
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人