生成ARM汇编

使用ndk即可生成arm汇编

1.首先写好hello.c

2.编写makefile

  1. #ndk根目录
  2. NDK_ROOT=E:\Android\android-ndk-r10b
  3. #编译器根目录
  4. TOOLCHAINS_ROOT=$(NDK_ROOT)/toolchains/arm-linux-androideabi-4.6/prebuilt/windows-x86_64
  5. #编译器目录
  6. TOOLCHAINS_PREFIX=$(TOOLCHAINS_ROOT)/bin/arm-linux-androideabi
  7. #头文件搜索路径
  8. TOOLCHAINS_INCLUDE=$(TOOLCHAINS_ROOT)/lib/gcc/arm-linux-androideabi/4.6/include-fixed
  9. #SDK根目录
  10. PLATFROM_ROOT=$(NDK_ROOT)/platforms/android-14/arch-arm
  11. #sdk头文件搜索路径
  12. PLATFROM_INCLUDE=$(PLATFROM_ROOT)/usr/include
  13. #sdk库文件搜索路径
  14. PLATFROM_LIB=$(PLATFROM_ROOT)/usr/lib
  15. #文件名称
  16. MODALE_NAME=hello
  17. #删除
  18. RM=del
  19. #编译选项
  20. FLAGS=-I$(TOOLCHAINS_INCLUDE) \
  21. -I$(PLATFROM_INCLUDE) \
  22. -L$(PLATFROM_LIB) \
  23. -nostdlib \
  24. -lgcc \
  25. -Bdynamic \
  26. -lc
  27. #所有obj文件
  28. OBJS=$(MODALE_NAME).o \
  29. $(PLATFROM_LIB)/crtbegin_dynamic.o \
  30. $(PLATFROM_LIB)/crtend_android.o
  31. #编译器链接
  32. all:
  33. $(TOOLCHAINS_PREFIX)-gcc $(FLAGS) -c $(MODALE_NAME).s -o $(MODALE_NAME).o
  34. $(TOOLCHAINS_PREFIX)-gcc $(FLAGS) $(OBJS) -o $(MODALE_NAME)
  35. old:
  36. $(TOOLCHAINS_PREFIX)-gcc $(FLAGS) -E $(MODALE_NAME).c -o $(MODALE_NAME).i
  37. $(TOOLCHAINS_PREFIX)-gcc $(FLAGS) -S $(MODALE_NAME).i -marm -o $(MODALE_NAME).s
  38. $(TOOLCHAINS_PREFIX)-gcc $(FLAGS) -c $(MODALE_NAME).s -o $(MODALE_NAME).o
  39. $(TOOLCHAINS_PREFIX)-gcc $(FLAGS) $(OBJS) -o $(MODALE_NAME)
  40. #删除所有.o文件
  41. clean:
  42. $(RM) *.o
  43. #安装程序到手机
  44. install:
  45. adb push $(MODALE_NAME) /data/local/tmp
  46. adb shell chmod 755 /data/local/tmp/$(MODALE_NAME)
  47. adb shell /data/local/tmp/$(MODALE_NAME)
  48. #运行程序
  49. run:
  50. adb shell /data/local/tmp/$(MODALE_NAME)

make old即可通过c来生成汇编文件

make即可编译arm汇编

Using as--the GNU Assembler 一份GNU arm汇编的文档

http://sourceware.org/binutils/docs/as/index.html

来自为知笔记(Wiz)

时间: 2024-10-10 13:30:20

生成ARM汇编的相关文章

ARM汇编指令集1

(汇编)指令是CPU机器指令的助记符,经过编译过会得到一串0011组成的机器码,可以由CPU读取执行. (汇编)伪指令本质不是指令(只是和指令一起写在代码中),它是编译器环境提供的,目的是用来指导编译过程,经过编译后伪指令最终不会生成机器码. 两种不同风格的ARM指令 --ARM官方的ARM汇编风格:指令一般用大写,Windows中的IDE开发环境(如ADS.MDK)常用.如:LDR  R0,[R1] --GNU风格的ARM汇编:指令一般用小写字母.Linux中常用.如:ldr  r0,[r1]

ARM 汇编指令集

转载,方便查找用. ARM汇编指令集 一. 跳转指令    跳转指令用于实现程序流程的跳转,在ARM程序中有两种方法可以实现程序流程的跳转: Ⅰ.使用专门的跳转指令. Ⅱ.直接向程序计数器PC写入跳转地址值. 通过向程序计数器PC写入跳转地址值,可以实现在4GB的地址空间中的任意跳转,在跳转之前结合使用 MOV LR,PC 等类似指令,可以保存将来的返回地址值,从而实现在4GB连续的线性地址空间的子程序调用. ARM指令集中的跳转指令可以完成从当前指令向前或向后的32MB的地址空间的跳转,包括以

ARM汇编指令的一些总结-转

ARM汇编指令的一些总结ARM汇编指令很多,但是真正常用的不是很多,而且需要认真琢磨的又更少了.比较有用的是MOV B BL LDR STR还是通过具体汇编代码来学习吧.@ disable watch dog timer mov r1, #0x53000000 //立即数寻址方式mov r2, #0x0str r2, [r1] MOV 没有什么好说的,只要掌握几个寻址方式就可以了,而且ARM的寻址方式比386的简单很多.立即数寻址方式,立即数要求以“#”作前缀,对于十六进制的 数,还要求在#后面

arm汇编

(汇编)指令是CPU机器指令的助记符,经过编译后会得到一串10组成的机器码,可以由CPU读取执行.(汇编)伪指令本质上不是指令(只是和指令一起写在代码中),它是编译器环境提供的,目的是用来指导编译过程,经过编译后伪指令最终不会生成机器码. ARM官方的ARM汇编风格:指令一般用大写.Windows中IDE开发环境(如ADS.MDK等)常用.如: LDR R0, [R1] GNU风格的ARM汇编:指令一般用小写字母.linux中常用.如:ldr r0, [r1] ARM采用RISC架构,CPU本身

ARM汇编指令汇总

1.ARM汇编的格式:    在ARM汇编里,有些字符是用来标记行号的,这些字符要求顶格写:有些伪码是需要成对出现的,例如ENTRY和END,就需要对齐出现,也就是说他们要么都顶格,要么都空相等的空,否则编译器将报错.常量定义需要顶格书写,不然,编译器同样会报错.    2.字符串变量的值是一系列的字符,并且使用双引号作为分界符,如果要在字符串中使用双引号,则必须连续使用两个双引号.    3.在使用LDR时,当格式是LDR r0,=0x022248,则第二个参数表示地址,即0x022248,同

VS2005混合编译ARM汇编代码-转

原文地址:http://blog.csdn.net/annelcf/article/details/5468093 公司HW team有人希望可以给他们写一个在WinCE上,单独读写DDR的工具,以方便他们量测Memory读写时的硬件信号. 在开发过程中,发现简单的在Storage Memory区域拷贝或粘贴文件不能达到硬件量测的要求,需要直接通过编写ARM汇编指令让CPU直接对Memory进行读写数据. 以 前没有用VS2005编写过汇编代码,所以走了点弯路,一直试图用内嵌汇编的方式来buil

嵌入式Linux ARM汇编(七)——C语言与ARM汇编混合编程

嵌入式Linux ARM汇编(七)--C语言与ARM汇编混合编程 在嵌入式系统开发中,目前使用的主要编程语言是C和汇编.在大规模的嵌入式软件中,例如含有OS,大部分的代码都是用C编写的,主要是因为C语言的结构比较好,便于人的理解,而且有大量的支持库.但是很多地方还是要用到汇编语言,例如开机时硬件系统的初始化,包括CPU状态的设定,中断的使能,主频的设定,以及RAM的控制参数及初始化,一些中断处理方面也可能涉及汇编.另外一个使用汇编的地方就是一些对性能非常敏感的代码块,这是不能依靠C编译器的生成代

[国嵌笔记][024][ARM汇编编程概述]

汇编程序用途 1.在bootloader与内核初始化时,还没有建立C语言运行环境,需要用到汇编程序 2.在对访问效率要求很高的情况下,需要用到汇编程序 ARM汇编分类 1.ARM标准汇编:适合于Windows在平台下使用 2.GUN汇编:适合于Linux在平台下使用 汇编程序框架 完整版: .section .data 数据段 <初始化数据> .section bss bss段 <未初始化数据> .section .text 代码段 .global _start 通过global申

arm汇编--ubuntu12.04 安装arm-linux交叉编译环境

1. 安装标准的C开发环境,由于Ubuntu安装默认是不安装的,所以需要先安装一下:sudo apt-get install gcc g++ libgcc1 libg++ make gdb 2.从ftp://ftp.arm.linux.org.uk/pub/armlinux/toolchain/下载最新版本的交叉编译器,我下载的是cross-3.2.tar.bz2,解压到Downloan目录,会生成home/Downloads/usr/local/arm/,然后sudo cp -r arm /u