主题的晦涩 人生的短暂

kongjun18's Github chart

Vimspector: 最强 Vim 调试插件

vimspector是一个基于 DAP(debug adapter protocol) 的Vim多语言调试插件,理论上能够支持所有支持语言(只要有对应的 DAP)。这个插件仍在实验阶段,可能会有各种bug,但是对C/C++、Python 等流行的语言已经进行了充分的测试。 这篇文章以调试 C/C++ 程序为例,介绍 vimspector 的配置与使用。 dap 依赖 带 Python3.6+ 支持的 Vim 8.2 或更高版本 带 Python3.6+ 支持的 Neovim-0.4.3 或更高版本(最好是 Nightly 版本) 由于 vimspector 的作者主要在 GNU/Linux 上使用 Vim 开

C/C++ 的严格别名规则

C/C++ 中的变量占有一块内存,这时这个变量就是这块内存的别名,指针也可以指向内存,因此同一块内存可能会有多个别名。 int main() { int i = 0; int *ip = &i; }其中i和ip是同一块内存,都是它的别名。 内存别名的存在会影响编译器生成的代码的行为。 考虑以下代码块(来自 CSAPP 5.1 节): void twiddle1(long *xp, long *yp) { *xp += *yp; *xp += yp; } void tiwddle2(long *xp, long *yp) { *xp *= 2 * *yp; }这两个函数的功能看起来是相同的,但其实不然。加入,xp和yp指向

GNU C 内联汇编

GNU C 允许在 C 代码中嵌入汇编代码,这种特性被称为内联汇编。使用内联汇编可以同时发挥 C 和汇编的强大能力。 本文介绍 GCC 的内联汇编拓展,Clang 编译器兼容大部分 GCC 语言拓展,因此 GNU C 的内联汇编特性大部分在 Clang 中工作正常。 本文实验环境如下: Linux Friday 5.8.17-300.fc33.x86_64 #1 SMP Thu Oct 29 15:55:40 UTC 2020 x86_64 x86_64 x86_64 GNU/Linux gcc (GCC) 10.2.1 20201016 (Red Hat 10.2.1-6)使用 64 位 AT&T 风格 x86 汇编,为了和编译器自动生成的注释区分开,我添加的注释使用#
0%