我正在尝试为Android编写一些汇编代码。通常我会使用nasm
,但它似乎根本不支持Android (ARM)
:
valid output formats for -f are (`*' denotes default):
* bin flat-form binary files (e.g. DOS .COM, .SYS)
ith Intel hex
srec Motorola S-records
aout Linux a.out object files
aoutb NetBSD/FreeBSD a.out object files
coff COFF (i386) object files (e.g. DJGPP for DOS)
elf32 ELF32 (i386) object files (e.g. Linux)
elf64 ELF64 (x86_64) object files (e.g. Linux)
elfx32 ELFX32 (x86_64) object files (e.g. Linux)
as86 Linux as86 (bin86 version 0.3) object files
obj MS-DOS 16-bit/32-bit OMF object files
win32 Microsoft Win32 (i386) object files
win64 Microsoft Win64 (x86-64) object files
rdf Relocatable Dynamic Object File Format v2.0
ieee IEEE-695 (LADsoft variant) object file format
macho32 NeXTstep/OpenStep/Rhapsody/Darwin/MacOS X (i386) object files
macho64 NeXTstep/OpenStep/Rhapsody/Darwin/MacOS X (x86_64) object files
dbg Trace of all info passed to output stage
elf ELF (short name for ELF32)
macho MACHO (short name for MACHO32)
win WIN (short name for WIN32)
它们似乎都与ARM无关,我错了吗?
答案 0 :(得分:3)
你是对的:NASM不支持ARM。
有一个非常简单的原因:ARM程序集与任何x86程序集无关。程序集链接到它所针对的硬件体系结构。汇编指令是实际处理器指令集的助记符,ARM指令集与x86指令没有任何共同之处,因为ARM架构不兼容x86。
为x86编写的任何汇编代码都不能在ARM上使用。这就是开发更高级语言(如C)的原因。
答案 1 :(得分:1)
NASM 仅支持x86 / 64架构。 ARM是一个完全不同的架构。您引用的列表是NASM能够将汇编的x86 / 64代码存储到的文件格式列表。