微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

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

最佳答案
你是对的:NASM不支持ARM.

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

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

原文地址:https://www.jb51.cc/android/431093.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐