About  [draft]

who am i who are you and then? cadwa

July 9, 2022 · 1 min · 9 words · Me

csapp bomb lab

Lab2 bomb GDB手册 Enscript Output (cmu.edu) 1 1.单步执行和跟踪函数调用 #include <stdio.h> int add_range(int low, int high) { int i, sum; for (i = low; i <= high; i++) sum = sum + i; return sum; } int main(void) { int result[100]; result[0] = add_range(1, 10); result[1] = add_range(1, 100); printf("result[0]=%d\nresult[1]=%d\n", result[0], result[1]); return 0; } result[0]=55 result[1]=5105 第二个有问题,因为sum未初始化,用的是第一次调用的寄存器 gcc -g main.c -o main gdb main -g选项的作用是在可执行文件中加入源代码的信息,比如可执行文件中第几条机器指令对应源代码的第几行,但并不是把整个源文件嵌入到可执行文件中,所以在调试时必须保证gdb能找到源文件。gdb提供一个类似Shell的命令行环境,上面的(gdb)就是提示符,在这个提示符下输入help可以查看命令的类别 看bomb.pdf chapter Ⅲ 3.2 程序编码 gcc -Og -o p p1....

November 3, 2021 · 4 min · 642 words · Me

CSAPP_lab1_data

CSAPP_Lab0_环境配置 Docker 让你省去配置环境的烦恼 搜索 CSAPP:什么:环境配置竟然这么简单 WSL2 也很方便,省去了找Docker镜像,Vscode配置到本地端口等麻烦 前置知识 逻辑移动 Logic Shift 如图,一个字节的数据向右移动一位,空出来的位用0填充 11001111逻辑右移一位,最低位进入进位标识位 算术移动 arithmetic shift 11001111,符号位为1,算术右移一位后得到11100111: ​ SHL SHL(左移)指令使目的操作数逻辑左移一位,最低位用 0 填充。最高位移入进位标志位,而进位标志位中原来的数值被丢弃: 若将 1100 1111 左移 1 位,该数就变为 1001 1110: SHL 的第一个操作数是目的操作数,第二个操作数是移位次数: SHL destination,count 该指令可用的操作数类型如下所示: SHL reg, imm8 SHL mem, imm8 SHL reg, CL SHL mem, CL x86 处理器允许 imm8 为 0〜255 中的任何整数。另外,CL 寄存器包含的是移位计数。上述格式同样适用于 SHR、SAL、SAR、ROR、ROL、RCR 和 RCL 指令。 [示例]下列指令中,BL 左移一位。最高位复制到进位标志位,最低位填充 0: mov b1, 8Fh ; BL = 10001111b shl bl, 1 ; CF = 1, BL = 00011110b...

November 3, 2021 · 3 min · 451 words · Me

🍀think

January 3, 2023 · 0 min · 0 words · Me

🎶emotion

知识是学习来的,经验是总结来的。

October 19, 2022 · 1 min · word · Me