AT&T学习笔记汇编之内联c语言

asm("assembly code");

ansi c将asm用于其它用途,用__asm__替换

在asm后面加上 volatile可以禁止编译器优化

asm volatile ("pusha \n\tpopa");

__asm__ __volatile__ ("pushl $1\n\t");

扩展asm

asm ("asm code" : output locate : input operands : changed registers)

changed register 改变的寄存器

"constraint" (variable)

位置        变量

修饰符

+ 读取和写入操作数

= 只能写入操作数

% 如果必要,操作数可以和下一个操作数切换。

& 在内联函数完成之前,可以删除或者重新使用操作数。

约束:    描述

a    使用%eax ax al

b    %ebx

c    %ecx

d    %edx

S    %esi    si

D    %edi    di

r    任何可用的通用寄存器

q    %eax ebx ecx edx之一

A    对64位使用%eax 和 %edx

f    使用浮点寄存器

t    使用第一个(顶部)浮点寄存器

u    第二个浮点寄存器

m    直接使用内存位置

o    使用内存偏移位置

V    直接使用内存位置

i    使用立即整数值

n    使用值已知的立即整数值

g    使用任何可用的寄存器或内存位置。

asm ("asm code" : "=a"(result) : "d":(data1) : , "c"(data2));

data1存放到edx data2存放到ecx 结果存放到eax,然后再传送到result

asm("asm code" : "=r"(result) : "r"(data1) , "r"(data2));

占位符%0将表示包含result值的寄存器,%1:data1,%2:data2h

引用占位符:

asm("imull %1 , %0" : "=r"(data2) : "r"(data1) , "0"(data2));

时间: 2024-10-11 13:47:46

AT&T学习笔记汇编之内联c语言的相关文章

VHDL硬件描述语言学习笔记---VHDL语言要素

VHDL硬件描述语言学习笔记---VHDL语言要素,布布扣,bubuko.com

C++学习笔记之——内联函数,引用

本文为原创作品,转载请注明出处 欢迎关注我的博客:http://blog.csdn.net/hit2015spring和http://www.cnblogs.com/xujianqing/ 作者:晨凫追风 一直想开始写C++的学习笔记,学习C++已经两个月了,今天开始写一下引用,内联函数,的一些概念和作用吧.那么开始吧! ????内联函数: 我们写的程序最终都是要用编译器,进行编译链接形成一段机器可以知道的二进制代码,接着存到一个内存中,这时候每一段程序代码都会有自己的一个地址,计算机按照地址增

mysql学习笔记之六(数据定义语言DDL)

SQL语言包括四类种主要程序设计语言类别的语句:数据定义语言(DDL),数据操作语言(DML)及数据控制语言(DCL)还有事务控制语言(TCL). ※  数据定义语言(DDL),例如:CREATE.DROP.ALTER等语句. ※  数据操作语言(DML),例如:INSERT(插入).UPDATE(修改).DELETE(删除)语句. ※  数据查询语言(DQL),例如:SELECT语句.(一般不会单独归于一类,因为只有一个语句). ※  数据控制语言(DCL),例如:GRANT.REVOKE等语

AT&T学习笔记汇编之内核

内核组成: 内存管理 设备管理 文件系统管理 进程管理 内存管理: 虚拟内存 交换空间 页面(块) cat    /proc/meminfo ipcs    -m 设备管理: 硬件管理  内核模块(kernel module) unix文件:字符,块,网络 设备文件被创建为节点,内核唯一数字标识.(主次设备号).相似设备的 主设备号相同,次设备号用于标识主设备号相同的设备. 文件系统 进程管理 init第一个进程. 系统调用  /usr/include/asm/unistd.h ebx    第

HTML5学习笔记3 内联SVG

HTML5支持内联SVG 下面来介绍一下什么是SVG SVG可缩放矢量图形 可缩放矢量是基于可扩展标记语言(标准通用语言的子集),用于描述二维矢量图形的一种图形格式.它由万维网联盟制定,是一个开放标准. 使用xml格式定义图形 在放大或缩小或改变尺寸的情况下其图形质量不会有损失 SVG优势 与其他的图像格式相比(比如jpeg和gif),使用svg优势在于 svg图像可通过文本编辑器来编辑来创建和修改 svg图像可被搜索,索引,脚本化或压缩 svg是可伸缩的 svg图像可在任何的分辨率下被高质量地

学习笔记-php简单联级下拉菜单输出-2016.4.7

在使用联级输出的时候一到一个模型里面的小问题,之前不注意,模型里不同的方法每次得到的数据交给控制器的时候,我都以数组的形式输出,但是这个数组我作为私有字段,到时今天做联级菜单输出的时候,不能正常输出,最后不得不吧这个私有字段去掉,在每个方法的作用域里面分别初始化一个数组,这样就互不干扰!(还是考虑的太少,太异想天开!) 不说了,贴代码 html部分 <select name="nav"> <option>请选择一个栏目类别</option> {$na

学习笔记-汇编-双层循环

汇编中 循环的语法是 C语言中的循环 mov cs,N   //循环最大次数    <-----> int i=N; blockName: //循环开始 <----->  for(;i>0;i++){ //xxx...   //循环中的语句      <-----> //XXXX loop blockName //循环结束  <-----> } 另附上汇编示例代码 1 assume cs:code 2 code segment 3 start: 4 m

学习笔记-汇编-两个16位数字相加获得32位数字

使用的是MASM编译 在XP环境下 command内 debug 调试的 啥也不说 上代码!! assume cs:code,ds:data data segment dw 0fa12h,0fdffh data ends code segment start: mov ax,data mov ds,ax ;设置数据段 mov ax,0h ;清零 mov bx,0h ;清零 mov al,ds:[0] ;fa12低位 mov bl,ds:[2] ;fdff低位 add ax,bx ;两个8位数字相

AT&amp;T学习笔记汇编之控制指令

跳转 jmp label call addresss 调用函数先将eip入栈,eip指向函数的地址 esp直接使用栈中的数据 push pop引用堆栈中的数据 程序通常把esp复制到ebp在使用ebp获取call指令之前传递给栈的信息. function_label: pushl %ebp movl %esp , %ebp <...normal code...> movl %ebp , %esp popl %ebp ret eflags 0 carry  借位 错位 11 overflow 溢