2023-2024-1 20211306 密码系统设计与实现课程学习笔记1

20211306 密码系统设计与实现课程学习笔记1

学习任务详情

自学教材第1,2章,提交学习笔记

  1. 知识点归纳以及自己最有收获的内容,选择至少2个知识点利用chatgpt等工具进行苏格拉底挑战,并提交过程截图,提示过程参考下面内容

“我在学***X知识点,请你以苏格拉底的方式对我进行提问,一次一个问题”
核心是要求GPT:“请你以苏格拉底的方式对我进行提问”
然后GPT就会给你提问,如果不知道问题的答案,可以反问AI:“你的理解(回答)是什么?
如果你觉得差不多了,可以先问问GPT:“针对我XXX知识点,我理解了吗?”
GPT会给出它的判断,如果你也觉得自己想清楚了,可以最后问GPT:“我的回答结束了,请对我的回答进行评价总结”,让它帮你总结一下

  1. 问题与解决思路,遇到问题最先使用chatgpt等AI工具解决,并提供过程截图
  2. 实践过程截图,代码链接
  3. 其他(知识的结构化,知识的完整性等,提交markdown文档,使用openeuler系统等)

一、1、2章学习总结

  • Unix/Linux命令

ls 列出cwd或目录的内容
cd 更改目录
pwd 打印cwd的绝对路径名
find 搜索文件
ssh 登录到远程主机
.
.
.

  • 文本编辑器

vim是Linux的标准内置编辑器,有三种不同的操作模式,分别是

  • 命令模式:用于输入命令
  • vim启动时默认是命令模式
  • h:光标向左移一个
  • l:光标向右移一个
  • j:光标向下移一个
  • k:光标向上移一个
  • 插入模式:用于输入和编辑文本

输入i或者a命令切换到插入模式

  • i:插入文本
  • a:追加文本
  • esc一次或多次:推出插入模式
  • 末行模式:用于保存文件并退出

输入":"进入末行模式

  • w:写入文件
  • q:退出vim
  • wq:退出并保存
  • q!:不保存更改,强制退出



    以上是我在与chatgpt聊天时学到的一些知识

gedit
gedit是GNome桌面环境默认的文本编辑器,它是ubuntu及其他使用gnome GUI用户界面的Linux默认编辑器

emacs
可在不同平台运行,GNU Emacs可在大多数Linux发行版中使用

  • 使用文本编辑器

emacs

输入 emacs【FILENAME】 使用一个可选文件名调用emacs编辑器
创建源文件后,按下meta键序列“CTRL+X+C”保存文件并退出,输入“y”保存文件并退出emacs

  • 程序开发

gcc

gcc是一个程序,步骤如下

gcc将源文件装换位二进制可执行文件

  • gcc t1.c t2.c
    生成一个二进制可执行文件 a.out

a.out

文件头

  • tsize:代码段大小
  • dsize:包含初始化全局变量和初始化静态局部变量的数据段大小
  • bsize:包含未初始化全局变量和未初始化静态局部变量的bss段的大小
  • total_siaze:加载的a.out文件的总大小
    代码段,也叫正文段,包含程序的可执行代码
    数据段:包含初始化全局变量和初始化静态数据
    符号表:可选,仅为运行调试所需

执行

在sh命令行 a.out one two three
执行a.out文件,sh创建一个子进程并等待其终止,子进程运行时,sh使用a。out文件,按照以下不愁创建新的执行映像

  • 读取a.out文件头
  • makefile

格式

目标项、依赖项、规则

make程序
假设我们有一个c语言程序包含三个源文件

  • 用sh指令 gcc -o myt main.c mysum.c
  • make -f mk1 :使用mk1作为makefile运行make
  • gcc -o myt t.c mysum.c make将构建目标文件myt

makefile变量

  • $@:当前目标名
  • $<:第一个依赖项名
  • $^:所有依赖项名
  • $*:不包含扩展名的当前依赖项名
  • $?:比当前目标更新的依赖项列表

PMTX系统makefile

PMTX是一个类Unix操作系统,其源文件放在三个子目录中

  • Kernel:PMTX内核文件;一些GCC汇编文件,用于C语言编写
  • Fs:文件系统源文件;均用C语言编写
  • Driver:设备驱动源文件;均用C语言编写
  • GDB调试工具

GDB是一个交互式调试工具,可以调用C、C++和其它几种语言的程序

在emacsIDE中使用GDB

makefile

  • gcc -g -o t t.c
    启动GDB
  • gdb -i=mi t

二、苏格拉底提问GPT













刚开始我在写学习总结时,想让gpt帮我写,但是他写不出来

三、linux代码运行


写一个简单的c语言代码

对他进行gcc编译,但是在生成hello.o的时候出现问题,应该是hello.s文件出错了


于是我先进行了查看二进制文件的操作

下面开始问gpt怎么解决,以下都是问的一些相关问题


但是都没有解决,然后在csdn上找到了答案,文章名叫《计算机系统学习笔记一————gcc分布编译,汇编报错》才发现是写代码的时候,大小写区分错误,"esc"的-E和-S都是大写,-c是小写,这样就解决了问题

然后进行下一个实践
这里也出现了一个问题,就是编译出"main"文件时,在进行"gcc./src/*.c -Iinclude -o bin/main"操作之后,"main"文件就会消失,我也问了gpt,但也没有得到实际解决


但最后还是自己调试成功了


本次任务到此就基本结束了,老师在课上讲,不自己操作是不会使用代码的,我深深体会到了这句话的含义,老师在课上轻松的操作,我在课下却耗费了一整个下午!

posted @ 2023-09-10 19:13  20211306丁文博  阅读(31)  评论(0编辑  收藏  举报