Linux下有什么asmpython编译器下载

asm -& asm-arm 在Linux中我怎么asm-arm是asm的快捷方式呢?_百度知道
asm -& asm-arm 在Linux中我怎么asm-arm是asm的快捷方式呢?
我有更好的答案
可以这么说 你可以用命令ls -ls asm-&asm-arm查看,这个是软链接也就是类似于window下面的快捷方式!
采纳率:32%
符号连接木有区别的,你仔细看看
为您推荐:
其他类似问题
您可能关注的内容
快捷方式的相关知识
换一换
回答问题,赢新手礼包
个人、企业类
违法有害信息,请在下方选择后提交
色情、暴力
我们会通过消息、邮箱等方式尽快将举报结果通知您。LINUX下用汇编用什么编译器_百度知道
LINUX下用汇编用什么编译器
我有更好的答案
印象中linux中标准的汇编器是GAS就是GCC后台依赖的工具as -o hello.o hello.s 就这么用要不用nasm也成个人觉得比GAS好用因为nasm支持intel汇编语法而且速度快得快给你个例子nasm -f elf hello.asm
采纳率:59%
为您推荐:
其他类似问题
您可能关注的内容
编译器的相关知识
换一换
回答问题,赢新手礼包
个人、企业类
违法有害信息,请在下方选择后提交
色情、暴力
我们会通过消息、邮箱等方式尽快将举报结果通知您。linux下的C语言的asm内嵌式汇编
最近在上linux系统安全分析这门课,自己对这一方便比较感兴趣,就记载在这里。
关于asm内嵌式汇编__asm__( " 汇编语句模板" : "输出部分 " : "输入部分 " :"破坏描述部分 ");
ps: 要是想告诉编译器 不想优化自己的代码,可以在asm后边加上volatile 。例如:__asm__ __volatile__(......);
在学习的过程中差了一些资料;现转载如下:
转载自:http://hi.baidu.com/leowang715/item/97aa9ac12b876e
Linux 嵌入式汇编
在Linux内核编程中需要完成大量与具体硬件相关的操作,由于C语言无法直接对硬件操作。GCC提供了嵌入式汇编的功能,即可以在C语言代码中内嵌汇编语言完成对硬件的直接操作。
下面先给出一个例子:
内嵌汇编格式:
汇编语句模板
:输出部分
:输入部分
:破坏描述
内嵌汇编格式总共4个部分:汇编语句、输出部分、输入部分、破坏描述。各个部分之间用英文中的分号(colon)隔开。汇编语句模板部分必不可少,其它3个部分可选。关键字asm,是告诉GCC编译器后面括号内的代码是内嵌汇编。 汇编语句模板: 内嵌汇编语句模板是由汇编指令序列组成,这些汇编指令之间需要使用分隔符(delimiter)如:“;”、“\n”或者“\n\t”分开。除了常规汇编中的操作数(立即数、寄存器、变量)之外,内嵌汇编中的汇编指令的操作数还可以是占位符,操作数占位符最多有10个,依次用%0,%1,%2,%3,···%9来表示,他们与操作数(包括输出列表、输入列表)出现的次序依次对应,代表相应的操作数。比如说示例程序中的占位符%0代表操作数output,占位符%1代表操作数input。
GCC默认占位符指示的操作数是长整型的(4个字节),但可以通过操作数宽度后缀,可以让占位符指示的操作数字(2个字节)或1个字节。
在%和序号之间插入字符“w”、“h”、“b”分别表示访问操作数中的低字、低字中的高字节、低字中的低字节。比如在示例程序中%1代表操作数input,%1、%w1、%h1、%b1分别对应数值0xx、0x78。对应IA32体系结构中通用寄存器的访问方式。以寄存器%eax为例,%ax代表寄存其%eax的低字部分,%ah代表%ax的高字节部分、%al代表%ax的低字节部分。
注意:汇编指令后缀通常应该和占位符中指示操作数的宽度一致,否则会导致不可预料的错误发生。
输出列表:
输出列表中指示和描述了该段内嵌汇编的输出结果保存到什么变量中,这些变量通过占位符作为汇编语句中的操作数。在输出列表中多于1个变量时,变量之间用逗号隔开。这些变量之前的修饰字符串中必须包含修饰字符“=”,表示它是一个输出操作数。
输入列表:
输入列表中指示和描述了该段内嵌汇编的输入变量。这些变量也通过占位符作为汇编语句中的操作数。在输出列表中多于1个变量的情况下,变量之间用逗号隔开。同样,输入变量前也可以使用修饰字符来影响、改变编译器的行为。
修饰字符:
修饰字符的作用主要是指示编译器如何处理其所修饰的变量、如何将变量与汇编指令中的操作数进行关联以及将变量放在寄存器中还是放在内存中等。 1、
寄存器绑定 (1)、“a”:该修饰字符要求编译器将被修饰的变量和寄存器%eax进行绑定。 (2)、“b”、“c”、“d”、“S”、“D”:分别要求编译器将被修饰的变量和寄存其%ebx、%ecx、%edx、%esi、%edi进行绑定 (3)、“q”:该修饰字符要求编译器将被修饰的变量与寄存器eax、ebx、ecx、edx中的任何一个进行绑定。便于优化寄存器的使用 (4)、“r”:该修饰字符要求编译器将被修饰的变量与寄存器eax、ebx、ecx、edx、esi、edi中的任何一个进行绑定。便于优化寄存器的使用 (5)、“A”:该修饰字符说明被修饰的变量是一个64位的数据,要求编译器将寄存器eax和ebx联合起来与该变量进行绑定。 (6)、“m”:该修饰字符说明被修饰的变量是一个内存变量,要求编译器不要将该变量与寄存器进行绑定 2、
匹配限制符 在汇编指令中很多操作数是先读后写型。比如:add %1,%0 那么占位符%0所指示的操作数就是先读后写形操作数。在做这次加法前,先要将%1、%0占位符所指示的变量先读入寄存器,然后相加,将结果再写回到%0所使用的寄存器。由于GCC不能很好地自动处理这种先读后写类型的操作数,所以不能完成预期任务。所以GCC引进了匹配限制符,帮助GCC处理这种先读后写类型的操作数。 匹配限制符是一位十进制的数字,共有10个,依次是:0、1、2、3、4、5、6、7、8、9,分别表示它修饰的操作数与占位符%0、%1、···%9对应的操作数相匹配。例如:使用“0”修饰在输入列表中一个变量,这就指修饰的变量与%0所指示的操作数是同一个操作数,需要将这个操作数进行先读后写处理。例子如下:
输出变量修饰符: (1)“&”:该修饰符只用于输出变量,表示输出变量不能和输入变量共用同一个寄存器。这样就可以避免很多隐性错误。例子如下: (2)“=”、“+”:这两个修饰符只用修饰输出变量。其中“=”表示输出变量只写,也就是说,不预先读入该输出变量到对应的寄存器中;而修饰符“+”表示必须先将输出变量预先读入到对应寄存器中,用于处理先读后写型变量。例子如下:
破坏描述: 1、寄存器破坏描述: 一种机制,用来通知编译器的内嵌汇编中修改了哪些寄存器。否则,对寄存器的再次使用就可能导致错误,破坏描述就是起到这种作用。换句话说,就是通知编译器,哪些寄存器不能被隐式使用了。破坏描述符有逗号隔开的字符串组成,每个字符串描述一种情况,一般是寄存器名,此外还有内存“memory”。我们称形如:“%eax”、“%ebx”、“%ecx”等为寄存器破坏描述符,称“memory”为内存描述符。 对于绑定了的寄存器,不需要使用破坏描述符进行描述了。
2、内存破坏描述符: 内存破化描述符也称内存屏障(barrier)。在Linux内核源代码中/include/linux/compiler-gcc.h文件中有这样的一个宏定义barrier: /* Optimization barrier */ /* The "volatile" is due to gcc bugs */ #define barrier() __asm__ __volatile__("": : :"memory") 该宏定义依赖于内存破坏描述符完成屏障工作,保障在屏障之前缓存在寄存器中的变量写回到内存中。避免因缓存变量到寄存器而形成变量的多份拷贝,进而导致程序失效。 对于系统程序而言,代码中存在一些边界,要在前面的指令执行完毕后,边界后的指令才能执行。也就是需要阻止编译器跨边界进行优化、重排指令顺序,这样保证了将前面缓存到寄存器的变量写回内存中去。C语言中的关键字“volatile”具有与内存破坏描述类似的功能,用于保证其所修饰的变量不会被优化、缓存到寄存器中。这样每次访问时,必须到对应的地址中去,避免了因优化导致的程序出错。
好了转载的资料完毕了,现在看一份题目吧:看看下面这段代码的输出结果
这段代码的输出结果是: output的值为0 temp的值为原始值
没有更多推荐了,
加入CSDN,享受更精准的内容推荐,与500万程序员共同成长!Linux源码里面include里面的asm-开头的文件夹放的是什么文件?_百度知道
Linux源码里面include里面的asm-开头的文件夹放的是什么文件?
Linux源码里面asm-开头的文件夹放的是什么文件?
我有更好的答案
指内核源码?是的话:主要定义了一些与CPU 体系结构密切相关的数据结构、宏函数和变量
采纳率:43%
汇编程序ASM汇编的简称
为您推荐:
其他类似问题
include的相关知识
换一换
回答问题,赢新手礼包
个人、企业类
违法有害信息,请在下方选择后提交
色情、暴力
我们会通过消息、邮箱等方式尽快将举报结果通知您。望眼山與水依舊
無盡的天高地厚
搞定Linux下Oracle ASM的安装
Linux下安装Oracle RAC时,要弄asm,这东东很麻烦。要跟内核跑,Oracle Linux好点,光盘中自带就有了。不像其它要跑到Oracle官网去下载asmlib 。而且这个东东,步骤不少,版本不同方法还有差异。为了查询方便,我在这集中整理了各种版本系统的搞法。
Oracle Linux 5以下的安装方法.
Oracle 6.4及以上版本的安装方法
yum直接安装asm的方法.
首先附上ASMLIB 官网下载地址
一。手工搞定安装
1. 检查是否已安装及系统内核
--查看内核
[root@xclrac1 /]# uname -rm
2.6.39-400.17.1.el6uek.x86_64 x86_6
--查看asm包
[root@xclrac1 /]# rpm -qa|grep asm
libatasmart-0.17-4.el6_2.x86_64
[root@xclrac1 /]#
[root@xclrac1 db2]# cat /proc/version
Linux version 2.6.39-400.17.1.el6uek.x86_64 (mockbuild@ca-build44.us.oracle.com) (gcc version 4.4.7
(Red Hat 4.4.7-3) (GCC) ) #1 SMP Fri Feb 22 18:16:18 PST 2013
[root@xclrac1 ~]# cat /etc/issue
Oracle Linux Server release 6.4
Kernel \r on an \m
2. 去官网找到相应系统对应的asm下载安装.
以前Oracle Linux 5 如下:
--安装ASM, support-&asm-& lib放最后
rpm -Uvh oracleasm-support-2.1.7-1.el5.x86_64.rpm
rpm -Uvh oracleasm-2.6.18-194.el5-2.0.5-1.el5.x86_64.rpm
rpm -Uvh oracleasmlib-2.0.4-1.el5.x86_64.rpm
现在Oracle 6.4就不需这么麻烦:
2.1 去系统光盘找到asmlib support的安装包(rpm -Uvh oracleasm-support-2.1.8-1.el6.x86_64.rpm)装上
2.2 去Oracle官网,下载Oracle Linux 6 对应的asmlib.rpm包并装上
2.3 重新查看
[root@xclrac1 db2]# rpm -qa|grep asm
oracleasmlib-2.0.4-1.el6.x86_64
libatasmart-0.17-4.el6_2.x86_64
3. 安装成功后,通过 oracleasm命令检查并管理asmlib
[root@xclrac1 /]# oracleasm status
Checking if ASM is loaded: yes
Checking if /dev/oracleasm is mounted: yes
[root@xclrac1 ~]# oracleasm update-driver
二。yum快速搞定安装
http://www.oracle.com/technetwork/server-storage/linux/uln-095759.html
Getting Oracle ASMLib via the Unbreakable Linux Network
Installing ASMLib via ULN
Now that the system is registered with ULN, it can install the software. Log in as root and run:
# yum install oracleasm-support oracleasmlib oracleasm-`uname -r`
On Oracle Linux 5 and older, run the following command instead:
# up2date -i oracleasm-support oracleasmlib oracleasm-`uname -r`
This will install the support tools, the library, and the kernel driver for the currently running kernel.
Note: If you are running the Unbreakable kernel, the ASMLib kernel driver is included in that kernel package, and the oracleasm-`uname -r` package should not be specified.
安装成功后。就可以.配置和管理asm 磁盘了。
这个可以参考另一篇文章&&&&. 虽然是Oracle VM的共享磁盘做法。但其中的asm部份,和挂实际共享存储没区别。
Blog:http://blog.csdn.net/xcl168
没有更多推荐了,
加入CSDN,享受更精准的内容推荐,与500万程序员共同成长!}

我要回帖

更多关于 asm文件编译器 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信