我在Mac Os X上,我在编译.s ARM程序集文件时遇到问题.
我的.s文件是这样的:
mov r0, r1
只是为了看它是否有效.
但是当我这样做的时候
arm-elf-as my.s
我得到了
a.out文件.
我做
chmod x a.out
和
./a.out
但它说
不能执行二进制文件
这让我很困惑,因为如果我用arm-elf-as编译它应该能够执行.我如何编写这个.s?
最佳答案 你正好组装它,你只是不能在Mac上运行它,因为Mac没有ARM CPU.如果您安装支持iOS的Xcode,您可以编译ARM代码:
# the file
$cat foo.s
mov r0, r1
# compile with llvm-gcc
$/Developer/Platforms/iPhoneOS.platform/usr/bin/llvm-gcc-4.2 -arch armv6 -c foo.s
# resulting file is ARM object file
$file foo.o
foo.o: Mach-O object arm
# and you can disassemble it
$otool -v -t foo.o
foo.o:
(__TEXT,__text) section
00000000 e1a00001 mov r0, r1
你将无法运行任何东西,因为你需要一个运行时系统和ARM CPU.例如,您可以使用-isysroot /Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS3.2.sdk或类似代码来编译iPhoneOS.