第一周学习任务
C语言调用栈
栈的基本认知
-
栈是一种典型的后进先出的数据结构,其操作主要有压栈与出栈两种操作
-
每个程序在运行时都有虚拟地址空间,其中某一部分就是该程序对应的栈,用于保存函数调用信息和局部变量。此外,常见的操作也是压栈与出栈
-
程序的栈是从进程地址空间的高地址向低地址增长的
在随后的学习中便可能用栈溢出来挖掘漏洞。
寄存器的基本认知
在 8086 架构中,所有的内部寄存器、内部以及外部总线都是 16 位宽,可以存储两个字节,因为是完全的 16 位微处理器。8086 处理器有 14 个寄存器,每个寄存器都有一个特有的名称。常用的可以为他们分为以下几类:
通用寄存器
| EAX(累加器"accumulator") AX(累积暂存器) AH(高八位) AL(低八位) | |||
|---|---|---|---|
| EBX(基地址"base"寄存器) BX(基底暂存器) BH(高八位) BL(低八位) | |||
| ECX(计数器"counter") CX(计数暂存器) CH(高八位) CL(低八位) | |||
| EDX(余数寄存器) DX(资料暂存器) DH(高八位) DL(低八位) |
他们均有着对应的功能
AX(Accumulator Register) : 累加寄存器,它主要用于输入/输出和大规模的指令运算。
BX(Base Register):基址寄存器,用来存储基础访问地址
CX(Count Register):计数寄存器,CX 寄存器在迭代的操作中会循环计数
DX(data Register):数据寄存器,它也用于输入/输出操作。它还与 AX 寄存器以及 DX 一起使用,用于涉及大数值的乘法和除法运算。
————————————————版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。原文链接:https://blog.csdn.net/m0_50662680/article/details/129162647
指针寄存器
| ESP(Stack pointer) | 栈指针 | 它是栈寄存器上的偏移量,用来定位栈 |
|---|---|---|
| EBP(Base pointer) | 基础指针 | 它也是栈寄存器上的偏移量,它用来定位栈上的变量 |
变址寄存器
| ESI(Source Index) | 变址寄存器 | 用来拷贝源字符串 |
|---|---|---|
| EDI(Destination Index) | 目标变址寄存器 | 用来复制到目标字符串 |
寄存器的使用约定
寄存器eax、edx和ecx为主调函数保存寄存器
ebx、esi和edi为被调函数保存寄存器
被调函数必须保持寄存器ebp和esp,并在函数返回后将其恢复到调用前的值
Linux终端命令
01.ls命令说明
-a 显示指定目录下所有子目录与文件,包括隐藏文件
-l 以列表方式显示文件的详细信息
-h 配合-l以人性化的方式显示文件大小
可以联合使用,与顺序无关
02.切换目录
cd
cd 切换到当前用户的家目录
cd ~(有空格) 切换到当前用户的家目录
cd .(有空格) 保持在当前目录不变
cd …(有空格) 切换到上级目录
cd -(有空格) 可以在最近两次工作目录之间来回切换
相对路径和绝对路径
- 相对路径 :在输入路径时,最前面不是/或者~,表示相对当前目录所在 的目录位置
- 绝对路径:在输入路径时,最前面是/或者是~,表示从根目录/家目录开 始的具体目录位置
03创建和删除操作
3.1touch
- 创建文件或修改文件时间
- 如果文件不存在,可以创建一个空白文件
- 如果文件已经存在,可以修改文件的末次修改日期
3.2mkdir
- 创建一个新目录
-p 可以递归创建目录
- 新建目录的名称不能与当前目录中已有的目录或文件同名
3.3rm
- 删除文件或目录
使用rm命令要小心,因为文件删除后不能回复
-f 强制删除,忽略不存在的文件,无需提示
-r 递归地删除目录下的内容,删除文件夹时必须加此参数
也可以用通配符
04拷贝和移动文件
| 序号 | 命令 | 作用 |
|---|---|---|
| 01 | tree(目录名) | 以树状图列出文件目录结构 |
| 02 | cp(源文件)目标文件 | 复制文件和目录移动文件 |
| 03 | mv源文件 目标文件 | 移动文件或者目录/文件或者目录重命名 |
4.1tree
- tree命令可以以树状图列出文件目录结构
- -d:只显示目录
~表示Linux的家目录
4.2cp
- cp 相当于给dos下的copy指令
| 选项 | 含义 |
|---|---|
| -i | 覆盖文件前提示 |
| -r | 若给出的源文件是目录文件,则cp 将递归复制该目录下的所有子目录和文件,目标文件必须为一个目录名 |
4.3mv
- -i 覆盖文件前的提示
05查看文件内容
| 序号 | 命令 | 作用 |
|---|---|---|
| 01 | cat 文件名 | 查看文件内容,创建文件,文件合并,追加文件内容等功能 |
| 02 | more 文件名 | 分屏显示文件内容(看后续文件按空格) |
| 03 | grep 搜索文本文件名 | 搜索文本文件内容 |
5.1cat
- 会一次显示全部内容,适合查看文件较少的文本文件
| 选项 | 含义 |
|---|---|
| -b | 对非空输出行编号 |
| -n | 对输出的所有行编号 |
linux中还有一个nl的命令和cat -b效果等价
5.2more
- more 命令可以用于分屏显示文件内容,每次只显示一页内容
- 适合查看内容较多的文本内容
| 操作键 | 功能 |
|---|---|
| 空格键 | 显示手册页的下一屏 |
| enter键 | 一次滚动手册页的一行 |
| b | 回滚一屏 |
| f | 前滚一屏 |
| q | 退出 |
5.3grep
桌面上快捷键 ctrl +f
- 强大的搜索工具
- grep允许对文本进行模式查找(正则表达式)
| 选项 | 含义 |
|---|---|
| -n | 显示匹配行及行号 |
| -v | 显示不包含匹配文本的所有行(相当于求反) |
| -i | 忽略大小写 |
格式:grep +字母 +文件名
可以联合使用,如果显示不包含所有行的行号:grep -vn +文件名
搜索词可以加双引号
- 常用的模式查找
| 参数 | 含义 |
|---|---|
| ^a | 行首,搜索以a开头的行 |
| ke$ | 行尾,搜索以ke结尾的行 |

106

被折叠的 条评论
为什么被折叠?



