本文介绍了进程的虚拟地址空间和函数调用时的栈变化。首先,讨论了x86架构下32位程序的虚拟地址空间结构,包括代码段、数据段(`.rodata`、`.data`、`.bss`)、堆和栈的布局。接着,通过一个简单的C++程序示例,展示了函数调用过程中栈的变化。文章详细描述了汇编代码中栈帧的创建、参数传递、局部变量的存储以及返回值的处理过程。最后,强调了虚拟地址空间和虚拟内存的区别与联系,指出虚拟地址空间是逻辑上的概念,而虚拟内存是实现虚拟地址空间和物理内存交互的底层技术。
起因 在eBPF程序开发中,当我们包含了 <asm/types.h> 头文件,在编译时,可能会出现问题: $ clang -target bpf -g -O2 -c xdp.c -o xdp.o In file included from xdp.c:2: /usr/include/linux/types.h:5:10: fatal …
下载 官网:https://www.gns3.com/software/download 官网下载很费劲,不如直接去 GitHub 文件清单 GNS3.VM.VMware.Workstation.2.2.49.zip GNS3-2.2.49-all-in-one.exe 安装 VMWare Workstation 安装 解压后,双击以VMware …
C盘扩容 由于有恢复分区阻隔,无法直接使用扩展卷,本教程回答如何在保留恢复分区的情况下扩展卷。 下载 DiskGenius 下载链接:https://www.123pan.com/s/tpm9-Z7Eyv 选择其他分区,调整分区大小,这里选择在E盘前面,调整出50GB的空间 选择C盘,扩容分区,然后选中刚刚腾出的50GB空间,点击确认,会自动…
使用 apt 命令安装 ssh,并配置免密登录