首页 > 编程语言 >嵌入汇编

嵌入汇编

时间:2023-04-25 10:12:14浏览次数:32  
标签:表示 汇编 嵌入 寄存器 浮点 fs 使用 表达式


嵌入汇编语句的基本格式为:
asm("汇编语句"
        :输出寄存器
        :输入寄存器
        :会被修改的寄存器
       );
常用的寄存器约束的缩写 :

r:I/O,表示使用一个通用寄存器,由GCC在%eax/ %ax/ %al、%ebx/ %bx/ %bl、%ecx/ %cx /%cl、%edx/%dx/%dl中选取一个GCC认为是合适的;
q:I/O,表示使用一个通用寄存器,与r的意义相同;
g:I/O,表示使用寄存器或内存地址;
m:I/O,表示使用内存地址;
a:I/O,表示使用%eax/%ax/%al;
b:I/O,表示使用%ebx/%bx/%bl;
c:I/O,表示使用%ecx/%cx/%cl;
d:I/O,表示使用%edx/%dx/%dl;
D:I/O,表示使用%edi/%di;
S:I/O,表示使用%esi/%si;
f:I/O,表示使用浮点寄存器;
t:I/O,表示使用第一个浮点寄存器;
u:I/O,表示使用第二个浮点寄存器;
A:I/O,表示把%eax与%edx组合成一个64位的整数值;
o:I/O,表示使用一个内存位置的偏移量;
V:I/O,表示仅仅使用一个直接内存位置;
i:I/O,表示使用一个整数类型的立即数;
n:I/O,表示使用一个带有已知整数值的立即数;
F:I/O,表示使用一个浮点类型的立即数;

=: O 表示此Output操作表达式是只写的
+ :O 表示此Output操作表达式是可读可写的
&:O 表示此Output操作表达式独占为其指定的寄存器
%:I 表示此Input操作表达式中的C/C++表达式可以与下一个Input操作表达式中的C/C++表达式互换
嵌入汇编程序规定把输出和输入寄存器统一按顺序编号,顺序是从输出寄存器序列从左到右,从上到下以"%0"开始,分别计为%0,%1,...,%9。
在执行代码时,如果不希望汇编语句被gcc优化而修改,就需要在asm符号后面添加关键字volatile。(__asm__volatile_(......);)
从制定段和偏移值的内存地址处取一个字节。 


此处)折叠或打开

#define get_seg_byte(seg,addr) \
({ \
; \
("push % %fs; \
           mov % %ax,% %fs; \
           movb % %fs:%2,% %al; \
           pop % %fs" \
:"=a"(_res) \
:"0"(seg),"m"(*(addr))); \  //"0"表示使用和上面同个位置的输出相同的寄存器
   
;})




标签:表示,汇编,嵌入,寄存器,浮点,fs,使用,表达式
From: https://blog.51cto.com/u_16087831/6223404

相关文章

  • 树莓派智能小车(嵌入式项目)
    智能系统中的嵌入式应用,下面是一篇搬运自{数字空间WRITE-BUG}的智能小车项目。嵌入式系统(EmbeddedSystem),是一种嵌入机械或电气系统内部、具有专一功能和实时计算性能的计算机系统。嵌入式计算机是面向应用、面向产品的、具有特定用途的计算机。它们没有刻意被制造成计算机的形态,......
  • c++在嵌入类中定义上层类的实例
    问题是这样的,嵌入类挺好的,可以有效表明类之间的从属关系,我们常常这样classA{public:classAttr{private:A&mA;};};这样是没有问题的,因为A此时还没有完全定义,使用引用或指针都是可以的。但是有些时候,如果A对象是一个临时对象,但我们想让Attr对象可以独......
  • 05-目录-计算机基础(组成原理、微机原理、汇编、操作系统、网络)
    :链接:链接:链接:链接:链接:链接:链接:链接:链接:链接:链接:链接:链接:链接:链接:链接:链接:链接:链接:链接:链接:链接:链接:链接:链接:链接:链接:链接:链接:链接:链接:链接:链接:链接:链接12:链接13:链接14:链接15:链接16:链接17:链接18:链接19:链接20:链接:链接:链接:链接:链接:......
  • GCC预处理、编译、汇编、链接全过程
    //hello.c#include<stdio.h>intmain(void){printf("Hello,world!\n");return0;} 预处理:替代宏,引入头文件cpphello.c>hello.i 编译:gcc-Wall-Shello.i(生成hello.s) 汇编:ashello.s-ohello.o(生成hello.o) 链接:复杂ld版:ld-dynamic-linke......
  • 4.20汇编学习
    首先配置文件和编译环境用x修改分辨率,屏幕显示大小。入门命令讲解 mount将磁盘挂载到文件 c进入直观理解计算机组成原理 -r查看CPU中的寄存器状态,还可以修改-d查看内存,可以分块查看,块+块偏移-e修改内存,可以直接修改,也可以进去一个一个修改,因为计算机是16进......
  • 1、基础汇编
    汇编语言1、基础知识(1)汇编指令是机器指令的助记符,同机器指令一一对应(2)每一种CPU都有自己的汇编指令集(3)CPU可以直接使用的信息在存储器中存放(4)在存储器中指令和数据没有任何区别,都是二进制信息(5)存储单元从零开始顺序编号(6)一个存储单元可以存储8个bit,即......
  • h5项目怎么嵌入到微信小程序中
    背景:最近用vue开发了一个h5的项目,然后产品说想把它上到微信小程序里面去,ok,开干!第一步:web-view<!--index.wxml--><viewclass="container"><web-viewsrc="https://xxx.xxxx.com/"/></view>第二步:在小程序中配置域名白名单     第三步:可以正常开发,调试啦遇......
  • 分享下之前做的STM32嵌入式Web完整设计教程和案例html,Ajax,Javacript,XML,cgi等
    这段时间好些网友咨询,特此再分享下:http://www.armbbs.cn/forum.php?mod=viewthread&tid=26034如果需要外网也可以访问,此贴:【专题教程第3期】开发板搭建Web服务器,利用花生壳让电脑和手机可以外网远程监控,手机4G访问域名效果:   微信公众号:armfly_com......
  • 词嵌入思想简要
    词嵌入(WordEmbedding)是一种将单词映射到低维向量空间中的技术,它通过将每个单词表示为一个向量,来捕捉单词之间的语义和上下文信息。这种技术的思想是基于分布式语义假说(DistributedSemanticsHypothesis)提出的。该假说认为,每个单词都可以通过它周围的上下文来表达其语义信息,也......
  • 基于线性支持向量机的词嵌入文本分类torch案例
    一、前言简介线性支持向量机,并使用线性支持向量机实现文本分类,输入文本通过词嵌入方法转换成浮点张量,给出torch案例线性支持向量机(LinearSupportVectorMachine,简称LinearSVM)是一种常用的分类算法,它通过一个超平面来将数据分成两类。对于线性可分的数据集,线性SVM......