
正文
linux命令汇编 linux怎么运行汇编
提示:扫一扫查出行【扫一扫了解最新限行尾号】
复制提示
Linux系统里如何编译汇编程序。
linux 编译汇编程序常用的有两种,一种是AT方式的,你gcc 就可以编译了。还有一种是80X86方式,一般是用NASM,NASM你要在安装LINUX时就要添加软件包,或者你进入图型界面,增加NASM软件包,就可以编译了。
相关问答
Q1: 对linux上的汇编的一些疑问
这是att格式的汇编
===================================
局部标号可以用数字,而且可以重复。在以这些标号为目的的转移指令上,标号要带上后缀,b表示向前,f表示向后。
例:
orw %bx,%bx
jz 1f
1:
movl $0x101000,%eax
movl %eax,%cr3 /* set the page table pointer.. */
movl %cr0,%eax
orl $0x80000000,%eax
movl %eax,%cr0 /* ..and set paging (PG) bit */
jmp 1f /* flush the prefetch-queue */
1:
movl $1f,%eax
jmp *%eax /* make sure eip is relocated */
1:
绝对跳转/调用指令中的内存操作数必须以’*’为前缀,否则gas总是认为是相对跳转/调用指令,而且gas汇编程序自动对跳转指令进行优化,总是使用尽可能小的跳转偏移量。如果8比特的偏移量无法满足要求的话,as会使用一个32位的偏移量,as汇编程序暂时还不支持16位的跳转偏移量,所以对跳转指令使用’addr16’前缀是无效的。还有一些跳转指令只支持8位的跳转偏移量,这些指令是:
’jcxz’,’jecxz’,’loop’,’loopz’,’loope’,’loopnz’’loopne’
如果你在汇编中使用了这些指令,用gas的汇编可能会出错,因为gcc在编译过程中不产生这些指令,所以在c语言中不必担心这些问题。
Array、 实模式下的语法与Intel指令语法基本相同;可以用上述格式的汇编单独写程序(有许多宏定义和它特有的文件格式),而后用gcc/gas将其汇编成目标代码。在linux中,这种形式的代码主要集中在启动部分。
Q2: linux能运行汇编语言么?
当然可以,在
嵌入式linux
中有一部分引导程序只能用汇编写,如果不能运行,那么linux岂不是垃圾么,当然,你得有相应的
编译器
才行。
关于linux命令汇编和linux怎么运行汇编的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。





