首页 > 编程语言 >汇编语言——寄存器

汇编语言——寄存器

时间:2024-05-13 20:44:38浏览次数:24  
标签:汇编语言 x64 内存空间 eax 内存 寄存器 CPU

寄存器

程序的本质

  • 软件/程序的执行过程
    • 硬盘中程序或者软件打开后,会被装载到内存中,由CPU进行读取内存中的机器指令,再由CPU控制计算机进行相应操作
    • CPU组成
      • 寄存器:信息存储
      • 运算器:信息处理
      • 控制器:控制其他器件进行工作

寄存器与内存

  • 通常,CPU会先将内存中的数据存储到寄存器中,然后在对寄存器中的数据进行运算
  • 假设内存中有块红色内存空间值是3,现在想把它的值加1,并将结果存储到蓝色内存空间中
    • CPU首先会将红色内存空间的值放到EAX寄存器:mov eax, 红色内存空间
    • 然后让EAX寄存器与1相加: add eax, 1
    • 最后将值赋值给蓝色内存空间: mov 蓝色内存空间, eax

 

x64汇编——寄存器

  • RAX\RBX\RCX\RDX 通用寄存器  (64bit)
  • 一个寄存器可以存储8Byte数据(8个字节)
  • 32位:EAX\EBX\ECX\EDX 通用寄存器
  • 16位:AX\BX\CX\DX 通用寄存器
  • x64向下兼容32位甚至更老的16位寄存器

x64汇编中,低位(后32位)兼容32位的寄存器

  • 也就是说,在x64汇编中,  mov eax , 10  实际上操作的也是RAX寄存器

  • 一般规律
    • R开头的寄存器是64bit的,占8字节
    • E开头的寄存器是32bit的,占4字节

 

标签:汇编语言,x64,内存空间,eax,内存,寄存器,CPU
From: https://www.cnblogs.com/1873cy/p/18189893

相关文章

  • __asm__ __volatile__ GCC的内嵌汇编语法 AT&T汇编语言语法 AT&T ASM Syntax
    1Overview 开发一个OS,尽管绝大部分代码只需要用C/C++等高级语言就可以了,但至少和硬件相关部分的代码需要使用汇编语言,另外,由于启动部分的代码有大小限制,使用精练的汇编可以缩小目标代码的Size。另外,对于某些需要被经常调用的代码,使用汇编来写可以提高性能。所以我们必须了解汇......
  • ILA抓出匪夷所思的错误,如一个always块里面的两个相同逻辑寄存器赋值出现毛刺
    有一种可能性是下载器太烂了,可以降速使用,或者换个质量好的(带屏蔽的下载器)。出错代码:(已知所有条件正确、length_fpga1和length_fpga2的逻辑完全相同,时钟稳定,时序无误)可以看到length_fpga2的bit11莫名其妙翻转,现在直接揭晓答案,因为下载器丢包了,当把测试的特定值改为0xaa,0x55等......
  • modbus怎么写多个保持寄存器
    近期,在做项目的时候,用到了modbus协议,有一个校时功能,就是需要定时发送时间到相应的设备,给相应的设备校时,协议里给出了寄存器地址和数据格式,如下 这个在程序里就需要写多个连续的保持寄存器,报文格式如下:串口modbus报文格式1110132700040818041C0F0423F0F04ED8......
  • 200 Smart的一些关于寄存器和地址相关的用法实例
    累加器200smart有AC0AC1AC2AC3四个累加器,不能作为位访问累加器大小均是32位累加器的数值不会自动清零,中断会保持并重新装载累加器(进入中断时先把原来的值保存起来,退出中断程序后恢复原程序)只有AC1/AC2/AC3可以用作指针AC0不用作指针,不用作间接寻址LDSM0.0......
  • 汇编语言简易教程(13):栈缓存溢出
    汇编语言简易教程(13):栈缓存溢出当程序溢出基于堆栈的动态变量时,可能会发生堆栈缓冲区溢出。例如,如果一个程序分配并使用一个基于堆栈的本地数组,该数组包含50个元素,并且数组中存储了50个以上的元素,则会发生溢出。这种溢出通常是坏的,通常会导致程序错误,甚至可能使程序崩溃......
  • 汇编语言简易教程(14):中断与恢复
    汇编语言简易教程(14):中断与恢复从一般意义上讲,中断是工作流的暂停或保持。例如,如果您正在打电话,门铃响了,则电话通话将处于暂停状态,门将应答。销售人员被送走后,电话交谈恢复(对话中断的地方)在计算机编程中,中断也是当前正在执行的过程的暂停或保持。通常,当前进程会中断,以便可......
  • 汇编语言简易教程(15):End
    汇编语言简易教程(15):End写到这里,就告一段落了.前面的内容写起来还是比较认真的,到后面的系统调用,栈缓存,中断这些内容已经快要昏迷过去了但是我认为这篇教程能够达到预期的目标:对于汇编代码的基本阅读了解汇编的基本机制我强烈建议各位有时间能够去阅读原书,难......
  • 汇编语言简易教程(13):栈缓存溢出
    汇编语言简易教程(13):栈缓存溢出当程序溢出基于堆栈的动态变量时,可能会发生堆栈缓冲区溢出。例如,如果一个程序分配并使用一个基于堆栈的本地数组,该数组包含50个元素,并且数组中存储了50个以上的元素,则会发生溢出。这种溢出通常是坏的,通常会导致程序错误,甚至可能使程序崩溃......
  • 汇编语言简易教程(12):系统服务
    汇编语言简易教程(12):系统服务应用程序必须使用操作系统执行许多操作。此类操作包括控制台输出、键盘输入、文件服务(打开、读取、写入、关闭等)、获取时间或日期、请求内存分配等访问系统服务是应用程序请求操作系统执行某些特定操作(代表进程)的方式。更具体地说,系统调用是执......
  • 汇编语言简易教程(12):系统服务
    汇编语言简易教程(12):系统服务应用程序必须使用操作系统执行许多操作。此类操作包括控制台输出、键盘输入、文件服务(打开、读取、写入、关闭等)、获取时间或日期、请求内存分配等访问系统服务是应用程序请求操作系统执行某些特定操作(代表进程)的方式。更具体地说,系统调用是执......