CSAPP Bomb Lab
之前的 Bomb Lab 没有做,现在刚好在上计算机系统基础这门课,学校使用了 CSAPP 的 Bomb Lab ,可以补交一下 CSAPP 的作业,也可以学习一下 GDB 的使用。 实验简述 遗憾地,CSAPP 的 Bomb Lab 早已提供的是 Linux 的 64 位可执行程序,而我校的 Lab 还是 32 位的 Windows PE32 。不过我还是找老师要到了它的 Linux 版本,不过也是 ELF32 ,可执行文件的名字叫bomb_32。 ...
之前的 Bomb Lab 没有做,现在刚好在上计算机系统基础这门课,学校使用了 CSAPP 的 Bomb Lab ,可以补交一下 CSAPP 的作业,也可以学习一下 GDB 的使用。 实验简述 遗憾地,CSAPP 的 Bomb Lab 早已提供的是 Linux 的 64 位可执行程序,而我校的 Lab 还是 32 位的 Windows PE32 。不过我还是找老师要到了它的 Linux 版本,不过也是 ELF32 ,可执行文件的名字叫bomb_32。 ...
最近在学习汇编语言,和朋友聊天时聊到了 C 语言中的变长数组,想知道在汇编后是什么样子的。 变长数组(Variable-length array) 可变长数组是指在计算机程序设计中,数组对象的长度在运行时(而不是编译时)确定。 ...
汇编语言学习笔记 预备知识 Intel 机器 微型计算机的构成 80X86 微处理器的基本结构 数据寄存器组 段寄存器组 80X86 的三种工作方式 实地址模式 保护模式 虚拟 8086 方式(V86方式) 数据在计算机内的表示形式 有符号数、无符号数、浮点数等相关知识见 CSAPP ...
之前学习了 Lua 的 Table 和协程,对 Lua 中另一个重要模块 GC 还有很多疑问,这次就来学习一下。 GC 简介与策略分类 在计算机科学中,垃圾收集(GC)是一种自动内存管理形式。垃圾收集器尝试回收程序分配但不再引用的内存;这样的内存被称为垃圾。 ...
正在上计算机系统基础,目前主要是在讲汇编语言,使用的开发环境自然是又老又臭的 DOS 加上 MASM 。之前我看到过 FreeDOS 这个自由的 DOS 发行版,打算试吃一下,之后的汇编实验也将在这上面进行。 ...
之前学习了如何写 Lua 程序,又因为 NeoVim 的插件可以用 Lua 写,所以想学习一下插件开发。 插件目录结构 我们的插件应当有至少两个目录:plugin用于放main代码文件,lua放其余的所有代码。当然,如果我们真的想把所有代码放在同一个文件里面,这也是可以的。但是请不要这样。因此,使用plugin/whid.vim和lua/whid.lua这两个文件就可以了。 ...
最近看到了一些关于侵入式和非侵入式链表的讨论,决定研究一下它们两个。 侵入式和非侵入式链表的区别 这里的侵入是相对于链表的指针域来说,所以最主要的区别就是非侵入式的链表容器中保存了一份用户传入的值。 ...
继续学习 OpenMP 的使用,尤其是一些较新版本。 OpenMP 4.0 Controlling OpenMP thread Affinity 因为很多硬件如今是 NUMA 结构,分配线程的位置可以很大程度上影响性能。 与核绑定有关的 OpenMP 结构 proc_bind (master | close | spread) ...
写 OpenMP 的时候总是感觉怪怪的,不知道什么时候该用什么,所以最近系统化地看一遍 OpenMP 的使用,主体为 OpenMP 2.0 和 3.0。 What is OpenMP? OpenMP Model 每个线程都有可以访问全局的共享内存。 数据可以是共享的也可以是私有的。 共享的数据可以被所有线程访问。 私有数据只能被拥有它的线程访问。 数据的传递对于编程者是透明的。 同步会发生,但是它大部分时候是隐式的。 ...
Lua 的一大特色就是协程的使用,在解释型语言中,如果不考虑嵌入到较为低级的语言(如 C 语言)中,就只需要操作调用栈并保存好上下文状态即可。但是 Lua 并不是一门纯粹依靠字节码的解释型语言,它常常与 C 语言反复嵌套,甚至出现 C 中调用 Lua ,Lua 中再调用 C 代码,,,的情况。一旦 Lua 调用的 C 库企图中断线程,再想恢复,就会是一个难题。好在 Lua 巧妙地解决了这些问题。 ...