首页 > 编程语言 >x86汇编学习

x86汇编学习

时间:2023-09-24 13:00:44浏览次数:46  
标签:汇编 操作数 x86 左移 blog 学习 指令 寄存器 net

  1. sal为算术左移,保持符号位不变。shl为逻辑左移,为无符号左移,最高位直接被次高位覆盖。对应的右移分别为sar, shr。 参考[https://blog.csdn.net/deniece1/article/details/](https://blog.csdn.net/deniece1/article/details/103274744#汇编语言中 sal(算术左移指令)和shl(逻辑左移指令)指令的区别?)
    指令的操作数可以为内存地址,也可以是寄存器,默认移动位1.
sall -16(%rbp)
  1. movslq。做符号扩展的移动,将4B的long移动为8B的quad。mov的位数分四种,movb 1B, movw 2B, movl 4B, movq 8B. 对应寄存器位数的寄存器为,al, ax, eax, rax。关于mov的介绍参考https://blog.csdn.net/vspiders/article/details/54728443
    对应无符号扩展movzlq,其中z表示使用0进行扩展移动,即多出的高位直接填0.

  2. xor常用于给寄存器赋值0.如 xorl %eax, %eax, x抑或本身为0.

  3. 乘法指令。一般整数乘法都会转化为sal+add指令来完成,更高效。乘法指令中,无符号乘法用mul,有符号乘法用imul, 指令只有一个操作数表示乘数(寄存器或内存地址都可以),被乘数存在当前的al,ax,eax中,乘的结果分高低位存在dx, ax寄存器中,高位结果不为0会给溢出位置1. 参考https://blog.csdn.net/qq_16774199/article/details/126357187

  4. cmp指令类似减法指令,cmp 目标操作数,源操作数 ,但不将结果设置到源操作数, 仅仅设置标志位,标志位可以被后面的jne等条件跳转指令使用。其中源操作数不能为imm。高级语言中,if(a==10) xx, 汇编需要反一下cmp $10, a

  5. lea指令表示load effective address。常用于计算数组下标地址,如 leaq (%rax, %rbx, $4),%rax,计算 a[i] = xxx;a[i]的地址。rbx存i的值,rax存a的地址值,a为整数地址,4为一个integer。 注意i为int,也需要用rbx而不是ebx来作为算地址的寄存器。

标签:汇编,操作数,x86,左移,blog,学习,指令,寄存器,net
From: https://www.cnblogs.com/zwlwf/p/17725818.html

相关文章

  • Oracle process/session/cursor/tx/tm的简单学习
    Oracleprocess/session/cursor/tx/tm的简单学习Oracle的部署模式Oracle安装时有专用模式和共享模式的区别共享模式(Sharedmode):在共享模式下,会话可以同时读取数据库的数据,多个会话可以并发地进行读取操作。这意味着多个会话可以共享相同的数据快照,并且彼此之间不会阻塞。......
  • 学习笔记1
    知识点ubuntulinux的使用unix/linux常用命令ls:lsdirname:列出CWD或目录的内容cddirname:更改目录pwd:打印CWD的绝对路径名touchfilename:更改文件名时间戳(如果文件不存在,则创建文件)catfilename:显示文件内容cpsrcdest:复制文件mvsrcdest:移动或重命名......
  • 学习笔记2
    第九章I/O库函数一.知识点归纳(一)I/O库函数与系统调用系统调用函数:open()、read()、write()、lseek()、close()I/O库函数:fopen()、fread()、fwrite()、fseek()、fclose()二者区别:在系统调用程序中,文件描述符fd是一个整数。在库I/O程序中,fp是一个文件流指针。系统调用ope......
  • 高级系统架构师学习(八)嵌入式系统
    一、嵌入式系统概述基本概念1、将可配置与可裁剪的软硬件集成于一体的专用计算机系统,需要满足应用对功能、可靠性、成本、体积和功耗等方面的严格要求。2、指嵌入各种设备及应用产品内部的计算机系统。它主要完成信号控制的功能。体积小、结构紧凑,可作为一个部件埋藏于......
  • 【机器学习 | 分类指标大全】全面解析分类评估指标:从准确率到AUC,多分类问题也不在话下
    ......
  • 第三周学习笔记
    sh编程1.sh脚本Shell脚本是一种用于在Unix、Linux和其他类Unix系统上编写和执行命令序列的脚本语言。它使用Shell解释器(如sh、bash、csh等)来解释和执行脚本。Shell脚本可以包含一系列命令、控制结构、变量和函数,用于完成特定的任务或自动化一系列操作。通过编写Shell脚本,你可以......
  • 学习笔记3
    第十章教材知识点Shell脚本:Shell脚本是一系列Shell命令的集合,以文本文件的形式保存,并通过Shell解释器执行。Shell脚本的文件扩展名通常为.sh。Shell脚本的第一行指定解释器,例如#!/bin/sh表示使用sh解释器。命令行参数:在Shell脚本中,可以通过特殊变量$0、$1、$2等来获......
  • 《Unix/Linux系统编程》教材第10章学习笔记
    大家学习过Python,C,Java等语言,总结一下一门程序设计语言有哪些必备的要素和技能?这些要素和技能在shell脚本中是如果呈现出来的?必备要素和技能:数据类型和变量:用于存储和处理数据的基本单元。控制结构:用于控制程序流程的结构,如条件语句、循环语句等。函数和模块:用于封装代码块......
  • 为什么要学习python技术??
    大家好,随着大数据时代的到来,相信大家对新时代的认知达到了一个新的高度,我们可以仔细观察我们的生活,似乎每一年都会发生较大的变化。我记得我刚上大学的时候,移动支付才刚开始普及,短短几年,出门只需要一部手机便能行走天下,其中计算机编程起到了重要作用。 我们为什么要学......
  • 学习笔记3
    关于知识点知识点归纳第十章10.1sh脚本sh脚本是一个包含sh语句的文本文件,命令解释程序sh要执行该语句。10.2sh脚本与C程序Shell脚本(sh脚本)和C程序是两种不同的编程语言和编程环境,它们有各自的特点和应用场景。Shell脚本(sh脚本):脚本语言:Shell脚本是一种脚本语言,通常......