计算机系统基础笔记1 5.1.1-6.2.3

c语言中的整数

5.1.1

汇编指令是机器指令的汇编表示形式,即符号表示。
机器指令和汇编指令一一对应,它们都与具体机器结构有关,都属于机器级指令。
机器指令和汇编指令的一一对应关系

高级语言程序转换为机器代码的过程

5.1.2
整理gcc常用选项
  1. -E 只进行预处理,不编译
  2. -S 只编译,不汇编
  3. -C 只编译,汇编,不链接
  4. -g 包含调试信息
  5. -I 指定include包含文件的搜索目录
  6. -o 输出成指定文件名
优化选项

-O0:关闭所有优化选项
-O1:第一级别优化,使用此选项可使可执行文件更小、运行更快,并不会增加太多编译时间,可以简写为-O
-O2:第二级别优化,采用了几乎所有的优化技术,使用此选项会延长编译时间
-O3:第三级别优化,在-O2的基础上增加了产生inline函数、使用寄存器等优化技术
-Os:此选项类似于-O2,作用是优化所占用的空间,但不会进行性能优化,常用于生成最终版本

目标文件可用 objdump -d test.o 反汇编为汇编语言程序
gcc
test:可执行目标文件
test.o:可重定位目标文件 //还没有链接
两者都是二进制代码文件

区别
可见两者的主要区别是地址。
可执行文件的地址是一个确切的值-虚拟地址。
在这里插入图片描述

关于ISA 指令集架构

ISA是一种规约,规定了指令如何使用硬件。它是一种可执行的指令的集合。
包括:

  • 指令格式,操作种类以及每种操作对应的操作数的相应规定。
  • 指令可以接受的操作数的类型
  • 操作数所能存放的寄存器组的结构,包括每个寄存器的名称,编号,长度和用途
  • 操作数所能存放的存储空间的大小和编址方式
  • 操作数在存储空间存放是按照大端还是小端方式存放
  • 寻址方式
  • 指令执行过程的控制方式,包括程序计数器,条件码定义等。
    不同ISA 规定的指令集不同,如,IA-32、MIPS、ARM等,计算机组成必须能够实现ISA规定的功能,如提供GPR、标志、运算电路等
    同一种ISA可以有不同的计算机组成,如乘法指令可用ALU或乘法器实现
5.2.2

IA-32架构由16位架构发展而来,因此,虽然字长位32位或更大,但一个字为16位,长度后缀为w;32位为双字,长度后缀为l
long double实际长度为80位,但分配96位=12B(按4B对齐)

5.2.3 IA32的寻址方式

存储器操作数的寻址方式与微处理器的工作模式有关。
两种工作模式:实地址模式,保护模式
两种工作模式
保护模式下的寻址方式

5.2.4 高级语言程序中寻址举例

按nB边界对齐就意味着该操作数存储的地址是n的整数倍。
如: 在linux系统里,double型变量按4B边界对齐,则其只能放在0,4,8,12等等为开始的的地址空间里。
寻址实例

5.2.5IA-32机器指令格式

IA-32机器指令格式
在这里插入图片描述

6.1.1常用传送指令

常用指令类型
栈由高地址向低地址增长。
小端方式是把最低有效字节放在低地址上
入栈指令
注意前面是源,后面是目的。
在这里插入图片描述

6.1.2值得一看再看
6.1.3

定点算数运算指令
乘除的区别
定点算数运算指令汇总
在这里插入图片描述

6.2.3

addw %bx %ax 是把寄存器ax里的内容和寄存器bx加起来放在寄存器ax里

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值