ChatGpt的苏格拉底挑战:
有关内核:
linux系统的核心是内核。内核控制着计算机系统的所有硬件和软件,在必要时分配硬件,并根据需要执行软件。
内核主要负责以下4种功能。
·系统内存管理
·软件程序管理
·硬件设备管理
·文件系统管理
有关GCC:
GNU Compiler Collection,编译器集合,能够将源代码转换成机器码
三个步骤:t1.c—>编译器——>t1.s——>汇编器———>t1.0———>链接器———>a.out
C源文件 汇编代码文件 目标代码文件/二进制机器码 二进制可执行文件
苏格拉底挑战2:
gcc运行时堆栈的使用情况要点总结:
- 每个函数都会被分配栈帧,用FP(BP)来表示指向当前激活函数的栈帧
- 为什么采用栈?先进后出,主函数开始读取压栈,再读取指向所调用的函数,执行时从调用的函数开始出栈
在下载emacs时使用书上apt-get install
命令没用,得用sudo apt install
猜测是sudo能获取更高权限的原因,询问gpt后得知结果:
两模块链接方式:
gcc main.c hello.c -o main
gcc *.c -o main
long jump
longjmp
是一个函数,用于实现非局部跳转。它与setjmp
函数一起使用,可以在应用程序中实现跳转到事先设置的位置。
longjmp
函数的原型如下:
#include <setjmp.h>
void longjmp(jmp_buf env, int val);
其参数包括一个jmp_buf
类型的环境变量(通常为数组类型),用于保存跳转位置的上下文信息,以及一个整数值val
,用于指定跳转后setjmp
函数的返回值。
要使用longjmp
实现跳转,首先需要在要跳转到位置的函数中调用setjmp
函数,将当前的上下文信息保存到jmp_buf
变量中。然后,在需要跳转到该位置的地方使用longjmp
函数完成跳转操作。
遇到的问题:
virtualbox虚拟机创建后无法启动,报错:Erorr in supR3HardenedWinReSpawn
链接:https://blog.csdn.net/qq_45730349/article/details/121470304
解决无法启动问题
虚拟光盘下载: