- 博客(83)
- 收藏
- 关注
原创 c++ static辨析
static这个说明符在不同的地方所起的作用是不同的,局部变量添加static后改变了存储方式即生存期,全局变量添加static后改变了作用域。
2024-04-16 22:49:57 238
原创 TVM python调用c++函数
TVM使用c++进行算子编译和部署,使用python语言做编译器前端,用来调用c++编写的代码,这样做的好处是既利用了python的易用性又利用了c++的性能,但是对于新手,看tvm代码时会非常的迷惑。这篇文章就我自己的理解来解释tvm是如何使用这两种语言的,水平有限,欢迎大佬批评指正。
2024-03-27 11:30:50 902
原创 ubuntu22.04默认终端Gnome打不开解决方案
ubuntu默认终端打不开,可能是由于修改了python3默认版本导致的,撤销修改后终端恢复正常
2024-03-11 09:33:53 870
原创 csapp archlab PartC满分解答
由于采用了十路循环展开,因此余数为[0, 9],由于跳转指令可以为jl,je,jg,因此区间判断的搜索树为一个三叉搜索树,选择3和7进行判断是综合考虑统计因素和余数优先级的结果。修改ncopy.ys和pipe-full.hcl以尽可能的提高ncopy.ys的运行速度。
2023-08-19 23:37:24 886
原创 lldb常用命令
使用gcc的选项进行编译 对filename进行调试 设置断点为filename文件的第line行break选项 指定断点为funcname函数 设置断点条件,如 查看断点列表 删除第一组断点 删除所有断点 启动目标程序 继续运行程序直到遇到断点 单步运行,不会进入子函数 单步运行,遇到子函数会进去 列出当前所有的变量值 查看变量值 设置变量值,如.........
2022-06-23 18:03:21 1440 1
原创 修改的LLVM IR基本指令
SysY2022语言定义中不包含无符号整数、结构体、移位操作,整数和浮点数均为32位,比赛测试样例不包含错误。鉴于语言定义的特点,在满足比赛要求的基础上筛选出了如下指令1. 终结符指令2. 一元运算3. 二元运算4. 按位二元运算5. 向量运算6. 聚合操作7. 内存访问和寻址操作8. 转换操作9. 其他操作程序中的每个基本块都以“终结符”指令结束,该指令指示在当前块完成后应该执行哪个块。概述:语法:例子:br指令概述:语法:表示一个布尔值,为真跳转到标签,为假跳转到标签无条件跳转到标签
2022-06-12 19:55:08 1929 2
原创 Mac安装Antlr生成C++代码
Or just download in browser from website: https://www.antlr.org/download.html and put it somewhere rational like /usr/local/lib.It’s also a good idea to put this in your .bash_profile or whatever your startup script is.二、安装C++运行时库下载 antlr4-cpp-runt
2022-06-05 23:59:02 407
原创 Mac交叉编译C/C++到树莓派
本文期望您的 Mac 上安装了 Xcode 和 homebrew,并且您的 Raspberry Pi 运行 Linux 并设置为通过 ssh 登录。为了为 Raspberry Pi 编译,我们需要 binutils 来组装和链接二进制文件,以及可以为 ARM CPU 生成代码的编译器。在这一步中,我们安装 clang 作为编译器和为硬浮点 GNU EABI 编译的 GNU binutils,这是大多数 Linux 发行版运行的。此外,我们还从 homebrew 安装了 rsync,后面用它来进行文件传输:
2022-06-03 19:37:28 839
原创 mac使用clang进行llvm IR学习
对程序中的编译预处理指令(非c语言指令,以#开头,不以;结尾)进行处理 将源代码(高级语言)翻译为汇编代码(低级语言)编译程序的组成这里的目标程序就是汇编代码 将汇编语言翻译为机器语言,汇编语言将二进制码(例如11000010)表示为人容易理解的形式(例如LOAD),因此汇编过程也相对简单 将c语言经过汇编之后生成的二进制文件,和系统组件(比如标准库、动态链接库等)结合起来,组合成一个可执行文件。 如果将编写的程序分散到多个源文件中,编译器每次只能编译一
2022-06-02 11:26:16 771
原创 Linux远程连接树莓派操作
打开hosts文件vi /etc/hosts输入服务器的IP与主机名,之后可以用主机名代替IP进行输入生成SSH密钥和公钥ssh-keygen -t rsa将SSH公钥上传到Linux服务器ssh-copy-id remote_user@remote_server复制本地文件到远程scp local_file remote_user@host:remote_folder复制本地文件夹到远程scp –r local_folder remote_user@host:remote_folder
2022-05-31 19:10:47 422
原创 写一个shell脚本的基本步骤
一、新建一个文件 test.sh#使用vi创建一个文本文件test.sh,扩展名为sh(sh代表shell),扩展名并不影响脚本执行,只是用来提示自己这是一个shell脚本vi test.sh#!/bin/bashecho "Hello World !"#! 是一个约定的标记,它告诉系统这个脚本需要什么解释器来执行,即使用哪一种 Shell二、把文件权限修改为可执行文件chmod +x ./test.sh三、执行脚本./test.sh四、如果想要在任何路径下运行该shell脚本
2022-05-31 19:08:39 9914
原创 配置以太网(Ethernet)端口
进入终端配置#conf t指定要配置的接口#int 接口名配置IP和掩码#ip addr ABCD XXXX只要掩码不冲突,可以配置多个IP#ip addr ABCD XXXX secondary激活接口#no shutdown退出配置#exit
2022-04-06 13:35:01 1826
原创 SQL和JDBC事务
事务的ACID原则原子性(Atomicity)一致性(Consistency)隔离性(Isolation)持久性(Durability)SQLJDBC开启事务start transaction;connection.setAutoCommit(false);事物提交commit;connect.commit();事务回滚rollback;connect.rollback();关闭事务在JDBC中往往将开启事务和事务提交放在try块
2022-03-24 17:27:00 1451
原创 JDBC使用预编译
import java.sql.*;注册驱动(不同的数据库驱动不同)Class.forName("com.ibm.db2.jcc.DB2Driver");创建连接对象Connection conn = DriverManager.getConnection(url,username,password);创建预编译命令对象PreparedStatement pstat = conn.prepareStatement(sql);pstat.setInt(1,1); //给第1个
2022-03-24 16:48:59 1294
原创 Mac上的oracle使用
进入docker容器:sudo docker exec -it $(docker ps|grep oracle|cut -d " " -f 1) /bin/bash通过sqlplus进入Oracle:sqlplus输入用户名和密码进入Oracle用户中的默认用户:超级管理员sys使用sys登录:sys/密码 as sysdba 使用sys登录后面必须跟as sysdba管理员system使用system登录:system/密码切换用户:conn 用户名/密码显示当前正在连接的用户是那一个:
2022-03-15 13:22:41 2456
原创 形式语言与有限自动机
一、词法分析概述任务:从源程序字符序列识别出相应独立意义的单词检查源程序中的词法错误分类:保留字(有限)特殊符号(有限):运算符、界限符、格式符标识符(无限)常量(无限)二、字符和字符串基本概念字符表语言的字符集Σ字符串ε表示空串字符串连接字符串的方幂x^n = xx…xx(n个x)字符串集合,例如A={a,b},空集{ε}字符串集合乘积,例如AB={xy|(x∈A)^(y∈B)}字符串集合的方幂,例如A^2={aa,ab,ba,bb}字符串集合的正闭包A+=
2022-03-03 20:00:44 192
原创 xv6调试
终端1 切换目录到xv6目录下终端1 输入make qemu-gdb,可以看到端口号<tcp::25502>终端2 输入riscv64-unknown-elf-gdb kernel/kernel终端2 输入target remote localhost:端口号终端2 输入file 文件路径,例如file user/_primes终端1 输入命令运行终端2中的文件终端2 设置断点并单步运行gdb调试命令b 断点位置 #设置断点,断点位置可以是函数名、行数start
2022-03-02 23:27:02 991
原创 gcc参数
-E 预处理 .c --> .i-S 预处理和编译 .i --> .S-c 预处理,编译和汇编 .S–>.o-o 连接 .o --> .elf
2022-03-02 22:19:59 165
原创 6.S081 第一章 操作系统接口
系统调用描述int fork()创建一个进程,返回子进程的PIDint exit(int status)终止当前进程,并将状态报告给wait()函数。无返回int wait(int *status)等待一个子进程退出; 将退出状态存入*status; 返回子进程PID。int kill(int pid)终止对应PID的进程,返回0,或返回-1表示错误int getpid()返回当前进程的PIDint sleep(int n)暂停n个时钟节拍...
2022-03-01 09:18:10 664
原创 《计算机系统要素》 第十二章 操作系统
操作系统的作用是用来衔接计算机的硬件系统和软件系统,本书的OS用软件封装了不同的硬件服务,在某种意义上来说最简单的OS就是语言的标准程序库Jack操作系统一共有八个类组成:Math提供基本的数学运算String实现String数据类型以及字符串的相关操作Array数组的构造和清除函数Output提供在屏幕上打印文本的服务Screen提供在屏幕上绘制图形的服务,和Output都利用到了图形学的知识Keyboard提供从标准键盘上读取输入的服务Memory提供直接访问宿主平台的主
2022-02-27 22:08:40 243
原创 《计算机系统要素》 第十一章 编译器II:代码生成
解决思路一、首先构件符号表模块分析Jack代码中所有符号的分类(class,subroutine,static,field,argument,var)如果是变量(static,field,argument,var),判断在这句代码中是定义还是使用如果是定义,需要向符号表中添加该变量,如果是使用,需要用符号表获取该变量的分类及索引号二、按照测试的步骤逐步用“生成VM代码”模块取代已有的“生成XML代码”模块Seven测试运算表达式(不带变量)、do语句和return语句十进制-二进制转换
2022-02-27 21:34:05 182
原创 《计算机系统要素》 第九章 高级语言
Jack语言规范详述一、语法要素空格和注释符号保留字常数标识符二、程序结构Jack中的基本编程单元是类三、变量四种类型的变量:成员字段静态变量局部变量参数变量数据类型:基本类型intbooleanchar对象类型数组(Array)字符串(Strings)四、语句letifwhiledoreturn五、表达式常数变量名this返回值为非空类型的子程序调用一元运算符做前缀的表达式“表达
2022-02-09 12:02:16 448
原创 Git&GitHub
Git介绍分布式版本控制系统Git结构工作区 –git add–> 暂存区 –git commit–> 本地库Git命令查看git版本 git --version设置用户名 git config --global user.name "USERNAME"设置邮箱 git config --global user.email "EMAIL"本地仓库的初始化(在仓库目录中) git init将文件提交到暂存区 git add filename将暂存区的内容提交到本地库 git c
2022-01-25 20:21:53 200
原创 《计算机系统要素》 第六章 汇编编译器
6.1 背景知识符号化的语言称为汇编,翻译程序称为汇编编译器,汇编编译器对每个汇编命令的所有部分进行解析,将每个部分翻译成它对应的二进制码,并将生成的二进制码汇编成真正能被硬件执行的二进制指令。编写汇编编译器的复杂性在于:允许汇编程序使用符号来代指内存地址,我们希望汇编器来管理这些用户自定义的符号,将他们解析成物理内存地址,一般采用符号表来完成这个任务。6.1.1 符号符号在汇编程序中通常有两个用途:变量程序员可以使用符号的变量名称,编译器会“自动地”为其分配内存地址标签在程序中用符号来标
2022-01-23 23:45:40 574
原创 《计算机系统要素》 第五章 计算机体系结构
芯片CPU从指令内存取出指令instruction从数据内存取出数据inM存入数据内存outM、writeM、addressM存入指令内存pcreset决定CPU设置pc=0指令内存ROM32K获取指令地址pc输出指令instruction屏幕接口Screen功能与一个8K的16-位RAM类似键盘接口Keyboard输出当前物理键盘上按下的键的代码数据内存Memory0-16383为16KRAM16384-24575为8K屏幕内存映像24576为键盘内存映
2022-01-20 23:24:38 216
原创 《计算机系统要素》 第四章 机器语言
机器语言对底层程序进行编码,从而形成一系列机器指令,机器语言的设计目标是能直接运行在指定的硬件平台上,并能对这个平台进行全面操控 机器语言是整个计算机体系中意义最深奥的接口——也是软件和硬件相接的中间线,既可以将机器语言看作编程工具,也可以将其看作硬件平台内部不可分割的一部分4.1 背景知识 4.1.1 机器 机器语言利用处理器和寄存器来操控内存 4.1.2 语言 机器语言程序是一系列二进制编码,鉴于二进制码晦涩难懂,可以利用助记符来表示二进制指令,并使用文本处理程序将符号解析为其内含
2022-01-17 23:59:08 709
原创 《计算机系统要素》 第三章 时序逻辑
计算机不仅要能计算值,而且还需要存取数据,因而芯片必须配备记忆单元来保存数据,这些记忆单元是由时序芯片组成。DFF(in, out) //D触发器Bit(in, load, out) // 1比特位寄存器Register(in[16], load, out[16]) // 16比特位寄存器RAM8(in[16], address[3], load, out[16]) // 8-寄存器RAM64(in[16], address[6], load, out[16]) // 64-寄存器PC(in[1
2022-01-16 13:56:35 334
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人