如何在Android中使用汇编语言如何写loop

【03-06水贴】这个是用什么汇编语言写的【android吧】_百度贴吧
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&签到排名:今日本吧第个签到,本吧因你更精彩,明天继续来努力!
本吧签到人数:0成为超级会员,使用一键签到本月漏签0次!成为超级会员,赠送8张补签卡连续签到:天&&累计签到:天超级会员单次开通12个月以上,赠送连续签到卡3张
关注:1,223,321贴子:
【03-06水贴】这个是用什么汇编语言写的收藏
这是cm里的文件,关于按键的,我想修改一下。
达内 android,去年我在达内参加了android培训,开始试听了7天的免费课程.达内 android,达内送了我1000元的学习卡,申请了培训之后交费
我也不知道。。。。。。。。
楼主真的知道汇编语言是什么东西么
你们家的汇编这样的
这是汇编?
这是配置文件吧
系统底层是厂家写的
我怎么觉得这是 properties
很明显是英语
这前面都是注释啊喂
阿里云云市场提供功能丰富的发者必备软件,帮助用户快速简便的操作和管理云主机服务器以及虚拟主机的管理系统
这个是音量加音量减hme等按键对应的值,在写代码时候可以用这些值监听按的哪个键
打#号的那几句完全是可以忽视的
什么机子?
配置文件好吧
想看汇编你可以上GitHub看阿波罗的源代码
.conf 吧。。
这个是配置文件吧。。。
登录百度帐号推荐应用基于Android的ARM汇编语言系列之三:ARM汇编语言程序结构
> 基于Android的ARM汇编语言系列之三:ARM汇编语言程序结构
基于Android的ARM汇编语言系列之三:ARM汇编语言程序结构
章节列表之一:ARM汇编语言开篇之二:C/C++程序生成ARM汇编程序的过程分析之三:ARM汇编语言程序结构之四:ARM处理器的寻址方式之五:ARM指令集与Thumb指令集之六:NEON指令集与VFP指令集本文引用地址:Android平台的ARM汇编是GNU ARM汇编格式,使用的汇编器是GAS(GNU Assembler),GAS有自己的一套语法结构。详细的内容可以查阅GAS语法结构官方手册。我们先来看一个完整的ARM汇编程序:C代码:#include int main(int argc, char* argv[]){printf("Hello ARM!\n");return 0;}对应的汇编代码:.arch armv5te.fpu softvfp.eabi_attribute 20, 1.eabi_attribute 21, 1.eabi_attribute 23, 3.eabi_attribute 24, 1.eabi_attribute 25, 1.eabi_attribute 26, 2.eabi_attribute 30, 6.eabi_attribute 18, 4.file
"hello.c".section
.rodata.align
2.LC0:.ascii
"Hello ARM!\000".text.align
2.global main.type
main, %functionmain:@ args = 0, pretend = 0, frame = 8@ frame_needed = 1, uses_anonymous_args = 0stmfd
sp!, {fp, lr}add fp, sp, #4sub sp, sp, #8str r0, [fp, #-8]str r1, [fp, #-12]ldr r3, .L3.LPIC0:add r3, pc, r3mov r0, r3bl
puts(PLT)mov r3, #0mov r0, r3sub sp, fp, #4ldmfd
sp!, {fp, pc}.L4:.align
2.L3:.word
.LC0-(.LPIC0+8).size
main, .-main.ident
"GCC: (GNU) 4.4.3".section
.note.GNU-stack,"",%progbits下面分部分介绍这段代码的结构。一 处理器架构定义.arch armv5te
@处理器架构.fpu softvfp
@协处理器类型.eabi_attribute 20, 1
@接口属性.eabi_attribute 21, 1.eabi_attribute 23, 3.eabi_attribute 24, 1.eabi_attribute 25, 1.eabi_attribute 26, 2.eabi_attribute 30, 6.eabi_attribute 18, 41.1 处理器架构.arch指定了ARM处理器架构。armv5te表示本程序的代码可以运行在armv5te架构的处理器上运行。1.2 协处理器类型.fpu指定协处理器的类型。softvfp表示使用浮点数运算库来模拟协处理器运算。还可以用vfpv2、vfpv3来指定自带的协处理器。1.3 接口属性.eabi_attrbute指定了一些接口。EABI(Embedded Application Binary Interface)嵌入式应用二级制接口是ARM指定的一套接口规范,Android系统实现了它。二 段定义.file
"hello.c".section
.rodata.align
2.LC0:.ascii
"Hello ARM!\000".text.align
2.global main.type
main, %functionmain:@ args = 0, pretend = 0, frame = 8@ frame_needed = 1, uses_anonymous_args = 0stmfd
sp!, {fp, lr}add fp, sp, #4sub sp, sp, #8str r0, [fp, #-8]str r1, [fp, #-12]ldr r3, .L3.LPIC0:add r3, pc, r3mov r0, r3bl
puts(PLT)mov r3, #0mov r0, r3sub sp, fp, #4ldmfd
sp!, {fp, pc}.L4:.align
2.L3:.word
.LC0-(.LPIC0+8).size
main, .-main.ident
"GCC: (GNU) 4.4.3".section
.note.GNU-stack,"",%progbitsARM中段的定义格式如下所示:.section name , "flags", %type, flag_specific_argumentsname:段名flags:段的属性,如读、写和可执行等。type:段的类型,如progbits表示段中含有数据,note表示段中包含的数据并非程序本身使用。flag_specific_arguments:指定了一些平台相关的参数。三 注释与标号GNU ARM支持两种注释添加方式。/* */型注释/* args = 0, pretend = 0, frame = 8 *//* frame_needed = 1, uses_anonymous_args = 0 */@型注释@ args = 0, pretend = 0, frame = 8@ frame_needed = 1, uses_anonymous_args = 0四 汇编器指令.file
"hello.c".section
.rodata.align
2.LC0:.ascii
"Hello ARM!\000".text.align
2.global main.type
main, %function程序中所有以.开头的指令都是汇编器指令,汇编器指令是与汇编器相关的,它们并不属于ARM指令集。.file:指定源文件名。.align:指定代码的对齐方式,后面跟的数值是2的次数方。.ascii:声明字符串。.global:声明全局符号,全局符号是指在本程序外可以访问的符号,.type:指定符号的类型。.word:用来存放地址值。.size:设置指定符号的大小。.ident:编译器标识,无实际用途。五 子程序与参数传递子程序在代码表示一个独立的功能,很多时候,子程序和代码是相同的概念。在汇编中声明函数的方式如下所示:.global 函数名.type 函数名 %Function函数名:...函数体...那么函数调用过程中,参数传递的方式如下所示:ARM汇编中规定:R0~R3这4个寄存器分别用来传递函数调用的第1到第4个参数,超出的参数通过堆栈来传递。R0寄存器用来存放函数调用的返回值。被调用的函数在返回前无需恢复这些寄存器的内容。
分享给小伙伴们:
我来说两句……
最新技术贴
微信公众号二
微信公众号一用户名:laokaddk
文章数:983
评论数:108
访问量:2677536
注册日期:
阅读量:1297
阅读量:3317
阅读量:461817
阅读量:1146089
51CTO推荐博文
&由于Android环境非常复杂,框架都是用Java,因此要使用C/C++都需要做很多配置,使用汇编的话需要做更多的工作。
我这边使用的是最新的Android4.0的开发工具,NDK也是最新支持4.0的。这个NDK与老版本的有一些比较明显的不同。
由于我用的是Mac OS X,因此配置起来比瘟抖死上的要容易许多,你不需要再装些杂七杂八的第三方工具,直接可以使用你下载好的NDK。
首先,设置目标路径&&在你的Terminal中进入NDK的根目录,随后打NDK_PROJECT_PATH=&&你要编译的项目路径&&。回车,再输入export&NDK_PROJECT_PATH
这里要注意的是NDK_PROJECT_PATH=后面的路径需要加引号,否则无效。
由于NDK默认支持的默认编译选项仅支持ARMv5到ARMv5TE架构,因此如果要使用比较高级的特性的话有两种方法:
1、你有办法将TARGET_ARCH_ABI的值变为armeabi-v7a,俺自己试了一下,木有成功。因此可以使用第二种方法,更简单便捷:
2、在你的NDK目录下,找到toolchains,然后找到arm-linux-androideabi-x.y.z目录,在进去可以发现setup.mk文件。找到-march=armv7-a,将上面的神马#ifdef都去掉,下面的#endif也都删了。这样就能确保编译器使用ARMv7A来编译。
完成上述操作之后我们就可以先用最简单的方式来写汇编了,即内联汇编&&
static&int&my_thumb(int&dummy)
&&&&__asm__(&movw r0, #1001 \t\n&
&&&&&&&&&&&&&movw r12, #2020 \t\n&
&&&&&&&&&&&&&add r0, r0, r12 \t\n&
&&&&&&&&&&&&&bx& lr&);
&&&&return&
Java_com_example_hellojni_HelloJni_stringFromJNI( JNIEnv* env,
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&jobject thiz )
&&&&my_thumb(0);
&&&&return&(*env)-&NewStringUTF(env, &Hello from JNI !&);
&上述代码其实就是基于NDK自带的hello-jni项目修改的。最后用ndk-build可以成功编译。
上面一段代码是编译器默认的使用Thumb/Thumb-2编译的,因此我里面写的内联汇编的指令都是Thumb代码。
我们下面将讲述一下如何使用ARM代码并使用NEON指令集。
首先,在你的Android.mk中修改LOCAL_SRC_FILES,要将源文件名后面添加.neon后缀,比如LOCAL_SRC_FILES := hello-jni.c改成LOCAL_SRC_FILES := hello-jni.c.neon。
这里要注意的是你真正的源文件名不要修改,就修改LOCAL_SRC_FILES这个符号的值即可。
然后我们再添加新的变量,来指示ARM GCC使用ARM指令集来编译&&LOCAL_ARM_MODE := arm
这样就OK了。我们修改一下代码:
/zenny-chen/archive//2232305.html
了这篇文章
类别:┆阅读(0)┆评论(0)求解,安卓系统是使用哪种汇编语言进行编写的?【病毒吧】_百度贴吧
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&签到排名:今日本吧第个签到,本吧因你更精彩,明天继续来努力!
本吧签到人数:0成为超级会员,使用一键签到本月漏签0次!成为超级会员,赠送8张补签卡连续签到:天&&累计签到:天超级会员单次开通12个月以上,赠送连续签到卡3张
关注:71,117贴子:
求解,安卓系统是使用哪种汇编语言进行编写的?收藏
手机病毒的原理和电脑病毒的原理一样么?求大神们指教啊。
音基考试,就去我爱音乐考试网
大神们该睡醒了。
基本一样。。。
我只知道python可以加模块编译,编译什么忘了
爪机病毒基本是为了钞票......
只是知道基于linux
系统是基于linux开发的。编写android程序。是用java编写的。。其实和普通一样开发。就是多了几个函数库。。
系统是linux 内核 用的是C加汇编,在linux上允许了
Java jre 所以android是用Java编程的
!!!!!
登录百度帐号推荐应用}

我要回帖

更多关于 汇编语言 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信