turbo que online ensamblador compilar assembler android arm nasm

android - que - manual nasm



Construir el binario ELF de Android con nasm? (2)

Estoy tratando de escribir algún código ensamblar para Android. Normalmente lo haría con nasm , pero no parece ser compatible con Android (ARM) en absoluto:

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)

Ninguno de ellos parece estar relacionado con ARM, ¿estoy equivocado?


Tiene razón: NASM no es compatible con ARM.

Hay una razón muy simple: el ensamblaje ARM no tiene nada que ver con ningún ensamblaje x86. Un ensamblaje está vinculado a la arquitectura de hardware para la que está hecho. Las instrucciones de ensamblaje son mnemónicos para el conjunto de instrucciones del procesador real, y el conjunto de instrucciones ARM no tiene nada en común con la instrucción x86, porque la arquitectura ARM no es compatible con x86.

Cualquier código de ensamblaje escrito para x86 no se puede usar en ARM. Esta es la razón por la cual se desarrollaron idiomas de nivel superior (como C).


NASM solo es compatible con las arquitecturas x86 / 64. ARM es una arquitectura totalmente diferente. La lista a la que se refiere es una lista de formatos de archivo en los que NASM puede almacenar el código ensamblado x86 / 64.