使用nasm构建android ELF二进制文件?

时间:2014-06-20 01:51:13

标签: android arm nasm

我正在尝试为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无关,我错了吗?

2 个答案:

答案 0 :(得分:3)

你是对的:NASM不支持ARM。

有一个非常简单的原因:ARM程序集与任何x86程序集无关。程序集链接到它所针对的硬件体系结构。汇编指令是实际处理器指令集的助记符,ARM指令集与x86指令没有任何共同之处,因为ARM架构不兼容x86。

为x86编写的任何汇编代码都不能在ARM上使用。这就是开发更高级语言(如C)的原因。

答案 1 :(得分:1)

NASM 支持x86 / 64架构。 ARM是一个完全不同的架构。您引用的列表是NASM能够将汇编的x86 / 64代码存储到的文件格式列表。