0%

显示隐藏文件夹

1
ls -a

如.git

Vim 粘贴会因为编辑器内置的‘智障’缩进从而形成乱码

Visual Studio

vs设置语言

在Visual Studio中,点击**”工具”–>”选项”–>”环境”–>”区域设置”–>”语言”**[1]

visual studio 调试

按F9设置断点, F5从断点处开始执行语句, F10从断点处一步一步执行代码.

阅读全文 »

3.7.5(1) 栈上的局部存储

语言特性角度的过程存储管理问题

接下来我们讨论一下过程中的存储管理问题。首先我们先从语言特性的角度上去分析这个问题。

阅读全文 »

3.6.1 条件码

条件码是处理器中的一些特殊标志位.

首先从程序员的角度上去看一下处理器。假设一个程序正在处理器上运行, 那么这个程序当前的状态,可以通过处理器中的一系列信息可以表示出来。那么这些处理器就是所有对于程序员可见的处理器, 以及一些标志位组成的。

之前所谈到的 16个通用寄存器。在寄存器中大量的寄存器被用于表示当前程序中所使用到的一些局部变量,

除此之外,还有两个特殊的寄存器,一个是rsp 寄存器,它表示当前这个程序运行时的栈的顶部地址。还有一个寄存器,就是程序计数器。在x86-64位系统中叫做rip 寄存器。这个寄存器中存放的是当前所执行的这条指令的下一条指令, 也就是接下来要执行的那条指令的地址。

阅读全文 »

3.6.5 使用跳转指令实现条件分支

这节探讨C语言if else 语句在使用汇编指令表示是采用什么样的方式去表示

image-20201015205526690

这有一个c 源的代码片段, 它定义了一个函数。这个函数的目标是计算了x 减y 的绝对值, 传入了两个参数x 和y , 如果x 大于y, 就用x 减去y , 否则就用y 减去x 。其实就是去算x 减y 的绝对值, 这样的一个程序,我们通过上面的这样一个指令,把它翻译成汇编指令。

1
gcc -0g -S -fno-if-conversion control.c
阅读全文 »

3.4.1 数据访问指令

数据访问指令, 它的助记符是move。通过这个名称,可以看出来,它实际上进行的是在源操作数以及目标操作数之间移动数据。虽然它的助记符是move, 但是更确切的去描述的话,可以理解为, 它是将源操作数中的数据复制到目标的位置,也就是源操作数中的数据是不会发生改变的。

阅读全文 »

在正式介绍汇编语言之前,首先介绍一下x86处理器中寄存器的组织形式。在x86系统中,对于所有的程序员都可见的寄存器一共是有16个。这16个我们也把它叫做通用寄存器。
包括rax, rbx, rcx, rdx, rsi, rdi, rsp, rbp, 以及r8到r15一共16个寄存器。这些以r作为打头的寄存器都是64位寄存器, 也就是说,每个寄存器可以存储8个字节的数据。

阅读全文 »

前言:这篇博文是我学习Computer Systems: A Programmer’s Perspective这本书整理的笔记,同时参考了B站@刘迪望和@九曲阑干等up主的翻译和原创视频,力求尽我所能将这本神书的笔记写到最好。

2-1 信息的存储

阅读全文 »

前言: 最近换了一台新笔记本, 需要花费大量时间个人定制笔记本上的编程环境. 对于一个计算机专业的学生来说, git肯定是必不可少的. 说来惭愧, 本人在初次用命令行学习git后就转向了Github Desktop和vscode的图形化界面来进行日常的代码版本控制, 没有很好的将命令行运用在平时的学习中. 加上九月份Github Cli 稳定版发布, Github上的操作也可以用命令行完成, 故趁部署个人开发环境之机回顾所学Git知识与操作, 培养命令行操作的习惯.

更重要的原因是, 在旁听某个Linux操作系统通识课时, w接触到一位熟练掌握Linux命令行和快捷键的大二软件工程专业学长, 全程脱离鼠标,仅仅在键盘上就完成了平时开发的各项操作. 顿时感到钦佩, 真正领略到了命令行的魅力,并长叹“我要这鼠标有何用”(狗头), 并在学长好基友的怂恿下“入了教”, 悉心向教主学习.

注: 本文仅仅涉及到git的冰山一角, 仅仅满足学生日常小项目开发需求, 更多操作可参考书籍或git官方文档

Git 基础回顾

阅读全文 »