美文网首页
汇编语言

汇编语言

作者: 冰棍儿好烫嘴 | 来源:发表于2021-12-24 17:18 被阅读0次

程序的本质

寄存器与内存

  • 通常,CPU会先将内存中的数据存储到寄存器中,然后再对寄存器中的数据进行运算
  • 假设内存中有块红色内存空间的值是3,现在想把它的值加1,并将结果存储到蓝色内存空间
    - CPU首先会将红色内存空间的值放到rax寄存器中:movq 红色内存空间,%rax(mac平台,寄存器前边有%)
    - 然后让rax寄存器与1相加:addq $0x1,%rax
    - 最后将值赋值给内存空间:movq %rax,蓝色内存空间

编程语言的发展

  • 机器语言:由0和1组成
  • 汇编语言:用符号代替了0和1,比机器语言便于阅读和记忆
  • 高级语言:C\C++\Java\JavaScript\Python等,更接近人类自然语言
  • 操作:将寄存器BX的内容送入寄存器AX
    - 机器语言:1000100111011000
    - 汇编语言:move %bx, %ax
    - 高级语言:ax = bx
  • 汇编语言机器语言一一对应,每一条机器指令都有与之对应的汇编指令
  • 汇编语言可以通过编译得到机器语言机器语言可以通过反汇编得到汇编语言
  • 高级语言可以通过编译得到汇编语言`机器语言,但汇编语言\机器语言几乎不可能还原成高级语言`

汇编语言的种类

  • 汇编语言的种类
    - 8086汇编(16bit)
    - x86汇编(32bit)
    - x64汇编(64bit)
    - ARM汇编(嵌入式、移动设备)
    - ......
  • x86、x64汇编根据编译器的不同,有2种书写格式
    - Intel:Windows派系
    - AT&T:Unix派系
  • 作为iOS开发工程师,最主要的汇编语言是
    - AT&T汇编 -> iOS模拟器
    - ARM汇编 -> iOS真机设备

常见汇编指令


movq -0x18(%rbp),%rax: 把%rbp-0x18地址对应的内容赋值给rax
leaq -0x18(%rbp),%rax:把%rbp-0x18地址值赋值给rax
call 0x100001c70跳到函数地址值,与retq配合使用,执行到retq之后就跳回到call的下一句汇编语言指令
jmp 0x100006640跳到某行代码所在位置,然后继续一直往下执行

寄存器

  • 有16个常用的寄存器
    - %rax、%rbx、%rcx、%rdx、%rsi、%rdi、%rbp、%rsp
    - %r8、%r9、%r10、%r11、%r12、%r13、%r14、%r15、
    - r开头的都是64位(bit)--8字节的寄存器
    - e开头的是32位(bit)--4字节的寄存器
    - ax、bx、cx开头的是16位(bit)--2字节的寄存器
    - ab、al、bh、bl开头的是8位(bit)--1字节的寄存器
  • 寄存器的具体用途
    - %rax常作为函数返回值使用
    - %rdi、%rsi、%rdx、%rcx、%r8、%r9等寄存器常用于存放函数参数
    - %rsp、%rbp用于栈操作

lldb常用指令


  • rip存储的是指令的地址
  • CPU要执行的下一条指令地址就存储在rip中
  • 内存地址格式为:0x4bdc(%rip),一般是全局变量,全局区(数据段)
  • 内存地址格式为:-0x78(%rbp),一般是局部变量,栈空间
  • 内存地址格式为:0x10(%rax),一般是堆空间

相关文章

  • 汇编语言探索(一)

    · 汇编语言 汇编语言的意义:汇编语言的产生是为了取代麻烦的机器语言。汇编语言的组成:有以下3类指令组成(汇编语言...

  • 2018-01-26

    计算机汇编语言 汇编语言(AssemblyLanguage) 是面向机器的设...

  • 汇编语言 学习笔记(三)

    汇编语言学习笔记 四、汇编语言程序格式 语句基本格式 汇编语言程序中的语句由 4 项组成,格式如下: 名字(nam...

  • 汇编语言

    汇编语言

  • 汇编语言之基础

    本系列为学习<汇编语言> 王爽版 的学习笔记 [TOC] 汇编语言是什么? 汇编语言是直接在硬件之上工作的编程语言...

  • 逆向 - 汇编 - 第一天

    reference 汇编语言与机器语言 高级语言 --(编译)-->汇编语言 --(编译)-->机器语言---->...

  • 逆向学习--汇编语言一

    一. 汇编语言 1. 汇编语言,用符号代替机器语言的,也被称为符号语言。在汇编语言中,用助记符(Mnemonic...

  • 使用系统汇编调用防止调试

    汇编语言防护

  • iOS逆向之初识别汇编

    汇编语言是使用助记符代替机器语言。 汇编语言的种类,目前讨论比较多的汇编语言有 • 8086汇编(8086处理器是...

  • 汇编入门一

    汇编语言与其它语言的关系 汇编语言的特点 对于不同型号的计算机,有着不同的结构的汇编语言,汇编指令是机器指令的助记...

网友评论

      本文标题:汇编语言

      本文链接:https://www.haomeiwen.com/subject/zogqqrtx.html