汇编代码由android 到mac 遇到的问题

最进遇到一个问题在移植一些  android 上的汇编语言到mac  上应用,整理了一下这里面遇到的问题和涉及的相关知识;

刚接触汇编,整理不对的还请提出;


 ./test.s:24:16: error: unexpected token in '.section' directive
 .section .text
               ^
./test.s:143:2: error: unknown directive
 .end 

在mac 上编译 如 test.s  遇到以上问题 ;

编译方法:
 /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/cc  -c test.s -o test.o ;

解决方法和相关知识整理:
linux 上编译一个汇编程序;
例如:
一个标准的.c 文件;

#include<stdio.h>
int main(int argc, char **argv){
 printf("display\n");
 return 0;
}

1. *.c  文件怎么变成可执行文件 ;
gcc -o  test  test.c 

2.怎么将.c   文件生成 汇编文件  

gcc -S test.c 

3.汇编文件怎么生成.o  

gcc -c test.s -o test.o

4.*.o 文件怎么生成可执行文件 ;

gcc -o test test.o

----------------------------------------------------------------------------------------------------------------------------------------------------------

上面的问题是由于mac 上 汇编的语法和 linux 上有几点不同导致;

apple 采用的是 汇编规范为 GNU Assembler

.section .text  去掉 .section 即可;

GAS规范中表示,可以用.global或.globl来标注全局函数。在Apple的Assembler中仅支持.globl

------------------------------------------------------------------------------------------------------------------------------------------------------------

详细的知识请参考:
http://www.cnblogs.com/zenny-chen/archive/2011/10/31/2229731.html
http://oss.org.cn/kernel-book/ch02/2.6.2.htm




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值