• GCC内嵌汇编一些限制字符串


    /******************/
    “b”将输入变量放入ebx
    “c”将输入变量放入ecx
    “d”将输入变量放入edx
    “s”将输入变量放入esi
    “d”将输入变量放入edi
    “q”将输入变量放入eax,ebx ,ecx ,edx中的一个
    “r”将输入变量放入通用寄存器,也就是eax ,ebx,ecx,edx,esi,edi中的一个
    “A”把eax和edx,合成一个64位的寄存器(uselong longs)
    “m”内存变量
    “o”操作数为内存变量,但是其寻址方式是偏移量类型,也即是基址寻址,或者是基址加变址寻址
    “V”操作数为内存变量,但寻址方式不是偏移量类型
    “,” 操作数为内存变量,但寻址方式为自动增量
    “p”操作数是一个合法的内存地址(指针)

    /******************/
    寄存器或内存

    “g” 将输入变量放入eax,ebx,ecx ,edx中的一个或者作为内存变量
    “X”操作数可以是任何类型

    /******************/
    立即数
    “I” 0-31 之间的立即数(用于32位移位指令)
    “J” 0-63 之间的立即数(用于64 位移位指令)
    “N” 0-255 ,之间的立即数(用于out 指令)
    “i” 立即数
    “n” 立即数,有些系统不支持除字以外的立即数,这些系统应该使用“n”而不是“i”

    匹配

    “0”、”1” …..”9”
    表示用它限制的操作数与某个指定的操作数匹配,也即该操作数就是指定的那个操作数,例如用“0 ”去描述“%1”操作数,那么“%1”引用的其实就是“%0”操作数,注意作为限定符字母的0-9 ,与指令中的“%0”-“%9”的区别,前者描述操作数,后者代表操作数。
    /******************/
    操作数类型
    “=” 操作数在指令中是只写的(输出操作数)
    “+” 操作数在指令中是读写类型的(输入输出操作数)
    /******************/
    浮点数
    “f”
    /******************/
    浮点寄存器
    “t”第一个浮点寄存器
    “u”第二个浮点寄存器
    “G”标准的80387

  • 相关阅读:
    HISI MPP模块 AO 和 ADEC 参数配置(转)
    HISI H264/H265 P帧帧内刷新功能,降低I帧太大带来的网络冲击(转)
    LiteOS系统--快速烧写.bin文件到norflash相应位置(转)
    海思平台(hi3559av100)的pq_sample代码编译过程和执行过程(转)
    MySQL主从同步配置
    WebLogic
    为什么公司用weblogic而不用tomcat?
    查看和更改rpm的默认安装路径的方法
    VM options 以及 properties文件的一些理解
    Could not transfer artifact xxx from/to xxx解决方案
  • 原文地址:https://www.cnblogs.com/dongguolei/p/7975449.html
Copyright © 2020-2023  润新知