0%

要死嘞要死嘞——

fprintf 函数

其实 printf 便是 fprintf(stdout, “output”); 的简写,将字符串投向标准输出。

C 语言把所有的设备都当作文件。所以设备(比如显示器)被处理的方式与文件相同。以下三个文件会在程序执行时自动打开,以便访问键盘和屏幕。

标准文件 文件指针 设备
标准输入 stdin 键盘
标准输出 stdout 屏幕
标准错误 stderr 您的屏幕
阅读全文 »

因为十分智障的错误被坑……我觉得 xilinx 的自带 editor 和那啥没什么大区别,atom 似乎不能用,所以用 vscode 好了

首先在插件里面安装 Verilog-HDL/SystemVerilog/Bluespec SystemVerilog,然后就可以实现高亮,但是要进一步配置还需要别的

安装 verilator

sudo apt-get install verilator

在扩展设置里面使用 verilator

阅读全文 »

赋值问题

reg [3:0] a = 3; 与 reg a = 3’d3; 这样的不等价啊不等价! 必须要 [3:0] 这样的来指定位宽,后面那个是指定数字位宽的!

所以位宽作用?

位宽扩展:如果所规定的位宽太小,那个将会截断高的几个位(如2’b1101,将变成2’b01),如果指定的位宽太大,则会用0或者x/z来向左扩展数值,但不会扩展符号位。

  对于有符号数:如果位宽位宽小于数值规定,符号位可能被截断(如数-4‘sd15,即1111_0001,将会被截断,代表的值为+1,即0001);

阅读全文 »

OS
  • linux /swap is treat as main memory? What place will the new stage process(job) in? main memory or disk? or in the /swap stage?

Not really understand, maybe in the swapping. When process in main memory idle or main memory is full, swap to the waiting.

  • meaning of addr space? is code, data, stack?

No, is the heap and stack in PCB, but it has it own pid. Virtual id, logical id, the pointer in c has this memory. Actual id is physical id.

阅读全文 »

安装并使用 PostgreSQL
1
2
3
sudo apt install postgresql postgresql-contrib
sudo -i -u postgres
psql

要切换用户到 postgres 才行,真是很奇怪耶……

好吧因为数据库还是有区别所以先放弃本机使用~ssh 吧

因为没有办法添加 path 所以每一次都需要

阅读全文 »

还是太乱了啊……所以就直接以 lab 命名吧,反正涉及很多小项的。

ex3,传入一个数组到 func

pointer 和 array 的关系在 c 程序设计的 5.3 中涉及到了,由于数组的定义其实本质上是指向整个数组连续存储的第一个,然后可以通过指针访问,eg:

1
2
3
4
5
6
7
8
int a[10]; // declare an array length 10
int *pa;
pa = a[0];
// 这将等价于
pa = a;
// 所以引用也是一致
x = a[0]; == x = *pa;
x = a[1]; == x = *(pa+1);

我的排序果然一团糟……使用 insert sort 的话代码如下

阅读全文 »

一直困扰我的……指针的语法其实不是很重要,以下三种都可以

1
2
3
int* a;
int * a;
int *a;

不过第三种是 the c programming language 里的,应该还是用这种吧。规范很重要对吧!

传值(pass by value)vs 引用(pass by reference),记住英语

以下这个来解释不错,有时间我写上

阅读全文 »

gcc -o <更改名称> 源文件

如果不加 -o 也可以执行,但是输出文件将会是 a.out,所以可以改名字,所以作用名的后缀其实无所谓啦(摊爪

这个在源文件的前面或者后面都可以

gcc 源文件 -lm // 连接 math 库

-l 之后紧跟库的名称,math 就是 m,不能加空格,也一定要在源文件后面。

阅读全文 »

1
target_link_libraries(<文件名称> m)

m 是 math 的缩写,似乎是因为 math 算是 seperate lib 所以要这么连接?并不知道具体 cmake 是怎么操作的, add executable 也是,未解之谜了属于是(

挖坑!一定填上!

这个方法似乎不适用于用 single execution 搞定的……我得更深研究 cmake 才行,现在先那啥,用 gcc 吧。

好像我上次不去搞 clion 就是因为它没法执行单个文件?在 plugin 里面搜索并添加 Single File Execution,在 single file 那里右键,最下面一个 add to path,记得 reload 一下 cmake,然后就可以啦~