系统级程序设计 - 机器级编程I:基础

menu

  • 汇编/机器代码
  • 机器指令示例
  • 数据格式
  • 传送数据
  • 完整存储器寻址方式
    • 最一般的形式:比例变址寻址
  • 压入和弹出栈数据
  • 地址计算指令

汇编/机器代码

系统级程序设计 - 机器级编程I:基础_第1张图片

  • PC: 程序计数器Program counter
    –下一条指令地址
    – 被称为“RIP” (x86-64)
  • 寄存器文件(寄存器堆)
    – 大量使用的程序数据
  • 条件码(寄存器)
    –存储关于最新算术或逻辑操作的状态 信息
    –用于条件分支
  • 内存
    – 字节可寻址数组
    – 代码和用户数据
    – 支持过程的堆栈(保存过程 调用和返回时的栈

机器指令示例

C代码
把t的值存储到dest指向的对象中
在这里插入图片描述
汇编代码
把8-byte值传送到内存中
用x86-64术语,四个字
系统级程序设计 - 机器级编程I:基础_第2张图片在这里插入图片描述
目标代码

  • 3-byte 指令
  • 存储位置在地址0x40059e
    在这里插入图片描述
    反汇编器
    objdump –d sum
  • 用于检查目标代码的有用工具
  • 分析指令序列的位模式
  • 生成汇编代码的近似再现
  • 可以以a.out(完整的可执行文件)或.o文件形式运行

数据格式

系统级程序设计 - 机器级编程I:基础_第3张图片
四种传送指令:
movb 传送字节
movw 传送字
movl 传送双字
movq 传送四字
系统级程序设计 - 机器级编程I:基础_第4张图片

传送数据

movq Source, Dest:
系统级程序设计 - 机器级编程I:基础_第5张图片系统级程序设计 - 机器级编程I:基础_第6张图片
系统级程序设计 - 机器级编程I:基础_第7张图片

完整存储器寻址方式

最一般的形式:比例变址寻址

系统级程序设计 - 机器级编程I:基础_第8张图片
系统级程序设计 - 机器级编程I:基础_第9张图片
系统级程序设计 - 机器级编程I:基础_第10张图片

压入和弹出栈数据

系统级程序设计 - 机器级编程I:基础_第11张图片

在这里插入图片描述

地址计算指令

系统级程序设计 - 机器级编程I:基础_第12张图片
系统级程序设计 - 机器级编程I:基础_第13张图片系统级程序设计 - 机器级编程I:基础_第14张图片
incq Dest Dest = Dest + 1
decq Dest Dest = Dest - 1
negq Dest Dest = - Dest
notq Dest Dest = ~Dest

你可能感兴趣的:(系统级程序设计)