cpp_04_compound_type
Ch4 复合类型
数组
通用命名格式:typeName arrayName(arraySize) ;
typeName :存储在每个元素中的值的类型;
arrayName :数组名称;
arraySize :元素数目,必须是整形或 const 值,也可以是常量表达式 8*sizeof(int) ,总而言之,arraySize 不能是变量,即不能是程序运行时设置的;
数组的初始化规则:
只有在定义数组的时候才能初始化(整体赋值);
不能将一个数组赋值给另一个数组;
如果只对数组的一部分进行初始化,其余元素被设置为 0 ;
初始化数组时方括号内为空,编译器会计算元素个数;
字符串
C++的字符串有两类:
C-风格的字符串:以空字符(null character) \0 为结尾,其ASCII码为 0 。例如:
char cat[8] = {'f', 'a', 't', 'e', 's', 's', 'a', '\0' ...
cpp_02_start_to_learn
Ch2 开始学习C++
进入C++
第一个程序
// myfirst.cpp--displays a message#include <iostream> // a PREPROCESSOR directiveint main() // function header{ // start of function body using namespace std; // make definitions visible cout << "Come up and C++ me some time."; // message cout << endl; // start a new line cou ...
cpp_01_preliminary_knowledge
Ch1 预备知识
前言
C++的背景
C++编程的基本原则
1.1 C++简介
三种编程方式
过程性语言 procedural language
以类为代表的面向对象语言
模板支持的泛型
C语言编程原理
过程性语言 procedural language 数据+算法=程序
结构化编程 structured programming 逻辑的条条框框
自顶向下 top-down : 大型程序分解成小任务模块
面向对象编程OOP
C++和泛型编程(generic programming)
可移植性和标准
ISO/IEC 14882:1998 => C++98 : 描述C++特性,添加异常、运行阶段类型识别(RTTI)、模板和标准模板库(STL)
C++的发展
编译和链接
Unix - [CC 源文件.c => 目标文件.o => 可执行文件.out]
Linux - [g++ 源文件.cxx / g++ 源文件.cxx -lg++ => 可执行文件.out + 目标文件.o]
Tai-e_A1_LiveVar_Analysis_and_Iterative_Solver
A1: Live Variable Analysis and Iterative Solver
Link: https://tai-e.pascal-lab.net/pa1.html#_1-作业导览
0x01 作业导览
为 Java 实现一个活跃变量分析(Live Variable Analysis)。
实现一个通用的迭代求解器(Iterative Solver),用于求解数据流分析问题,也就是本次作业中的活跃变量分析。
我们已经在 Tai-e 的框架代码中提供了你需要的一切基础设施,包括但不限于:程序分析接口、常用数据结构(如数据流信息的表示)、必要的程序信息(如控制流图)等内容。由此,你就可以便利地在 Tai-e 上实现各类数据流分析了。例如在本次作业中,你要在框架代码中补全一些关键部分,从而实现要求的活跃变量分析与迭代求解器。
需要特别注意的是,所有作业文档都只会简要地介绍本次作业中必要的一些 API。因此,如果要搞清楚 API 的实现机制、真正理解框架代码,你必须留出时间阅读、理解相关类的源代码和相应的注释。这是你提升快速上手复杂代码能力的必经之路。
0x02 复习
复习一 ...
Tai-e_A0_Set_up
Set Up Tai-e Assignments
Tai-e实验指导书:https://tai-e.pascal-lab.net/intro/setup.html
Github:https://github.com/pascal-lab/Tai-e-assignments
java 17:https://jdk.java.net/17/ or Intellij IDEA:https://www.jetbrains.com/idea/download/#section=windows
Preface
目前,Tai-e 利用 Soot 前端解析 Java 程序并帮助构建 Tai-e IR。Soot 有两个前端,分别处理 Java 源代码文件(.java)和字节码文件(.class)。其中,前者可以将源代码中的变量名保留至 IR 中,从而使得生成的 IR 更贴近源码,比后者的更易于理解。因此,在实验作业中,测试用例(即待分析的程序)都以 Java 源文件的格式提供。然而,Soot 的 Java 源文件前端已经过时(只对最高 Java 7 版本提供部分支持)且不够健壮。与之相比,尽管 Soot ...
OS_04_lab_bootloader
BootLoader