文档章节

ndk内联汇编的使用之arm指令学习和调试

 魔仙剑痴
发布于 2016/06/06 19:31
字数 264
阅读 53
收藏 0
#include <stdio.h>


int my_thumb_wjh(int dummy)
{
	__asm__(
	"mov r0,#1 \t\n"	
	"mov r1,#2 \t\n"
	"add r0,r0,r1 \t\n"
	"bx lr"
		
	);
	return dummy;
	
}
int my_thumb(int dummy)
{

	__asm__(

	"mov r0,#13 \t\n"

	"mov r1,#2 \t\n"

	"add r0,r0,r1 \t\n"

	"bx lr"
		
		);
	return dummy;

}
int my_thumb2(int dummy)
{
	__asm(
	"mov r0,#0x1\t\n"
	"ldr r0,__start\t\n"
	"adr r0,__start\t\n"
	"ldr r0,__start\t\n"		
	"__start:\t\n"
	"nop\t\n"
		);
	return dummy;
}
int data_function()
{
	printf("data_function run\n");
	return 1024;
}

static int my_arm(int dummy)
{
		__asm__(

	"mov r0,#13 \t\n"

	"mov r1,#2 \t\n"

	"add r0,r0,r1 \t\n"
	"mov r3,#5 \t\n"
	"sub r0,r0,r3 \t\n"
	"mov r3,#9 \t\n"
	"mul r0,r0,r3 \t\n"
	"bx lr"	
		);	
	return dummy;
}
void test()
{
	__asm__(	
	"bl data_function \t\n"
		);
	
	printf("test run\n");
	
}


//http://blog.csdn.net/zhangmiaoping23/article/details/44782843
//ndk内联汇编的使用之arm指令学习和调试
int main(int argc, char **argv)
{
	
	int n = my_thumb(12);
	printf("result=%d\n", n);
	
	int result = my_thumb2(12);
	printf("result=%d\n", result);
	
	int result_my_arm = my_arm(12);
	printf("result_my_arm=%d\n", result_my_arm);
	
	test();
	
	printf("Hello, World!\n");	//Set a breakpoint here or press F10 to step into.
	return 0;
}

 


LOCAL_PATH := $(call my-dir)

include $(CLEAR_VARS)
LOCAL_MODULE    := arm_demo
#VisualGDBAndroid: AutoUpdateSourcesInNextLine
LOCAL_SRC_FILES := arm_demo.c
LOCAL_C_INCLUDES :=
LOCAL_STATIC_LIBRARIES :=
LOCAL_SHARED_LIBRARIES :=
LOCAL_LDLIBS :=
LOCAL_CFLAGS :=
LOCAL_CPPFLAGS :=
LOCAL_LDFLAGS :=
COMMON_SRC_FILES := $(LOCAL_SRC_FILES)
include $(BUILD_EXECUTABLE)

 

© 著作权归作者所有

粉丝 3
博文 10
码字总数 1804
作品 0
深圳
架构师
私信 提问
ARM嵌入式开发中的GCC内联汇编简介

ARM嵌入式开发中的GCC内联汇编简介 嵌入式开发交流群280352802,欢迎加入! 在针对ARM体系结构的编程中,一般很难直接使用C语言产生操作协处理器的相关代码,因此使用汇编语言来实现就成为了...

长平狐
2013/06/03
102
1
Essential Linux Device Driver附录A . Linux汇编

图A.1显示了Linux在PC兼容系统上的引导顺序,是第2章“内核一瞥”中图2.1的缩减版。图中的固件组件是用不同的汇编语法实现的: · BIOS通常全部用汇编编写。一些流行的PC BIOS使用像Microso...

21cnbao
2012/09/17
0
0
Linux 汇编语言开发指南

Linux 汇编语言开发指南 肖文鹏 ( xiaowp@263.net), 北京理工大学计算机系硕士研究生 本文作者 肖文鹏是北京理工大学计算机系的一名硕士研究生,主要从事操作系统和分布式计算环境的研究,喜...

晨曦之光
2012/03/09
733
0
支付宝如何优化移动端深度学习引擎?

     阿里妹导读: 移动端深度学习在增强体验实时性、降低云端计算负载、保护用户隐私等方面具有天然的优势,在图像、语音、安全等领域具有越来越广泛的业务场景。考虑到移动端资源的限制...

深度学习
2018/06/21
0
0
AT&T的汇编格式&X86内联汇编

AT&T的汇编格式 一 基本语法 语法上主要有以下几个不同. ★ 寄存器命名原则 AT&T: %eax Intel: eax ★源/目的操作数顺序 AT&T: movl %eax,%ebx Intel: mov ebx,eax ★常数/立即数的格式 AT...

AlphaJay
2012/05/18
0
0

没有更多内容

加载失败,请刷新页面

加载更多

protoc 编译工具

在进行开发 protoc 之前,你需要首先在你的计算机中安装 protoc 编译工具。 下载编译工具 进入 Protocol Buffers 的源代码中然后选择发布的版本中,找到对应的版本。项目的链接地址为:https...

honeymoose
今天
1
0
uniapp + bootstrapvue 移动/PC 一套搞定 (一)配置bootstrapvue

1.准备文件 自己到DCloud官网: http://dcloud.io/ 去下载官方的IDE Hbuilder,新建一个空的uniapp项目即可。 uniapp框架自带优化的vue,我们仅仅需要准备以下三个文件: bootstrap.min.css ...

panyunxing
今天
10
0
Android Camera原理之camera service类与接口关系

camera service主要是指 frameworks/av/services/camera/下面的代码,最近在看这一块的代码,为了更好地理清这一块的代码,也为了后续学习camera方便一些,我觉得很有必要理一下这一块的整体...

天王盖地虎626
今天
2
0
Golang学习笔记

[TOC] Golang学习笔记 这个学习笔记是最早在1.初,版本左右的时候写的,和当前最新的版本可能会有较大的差异. 因为成文比较早,文章里面又有很多自己的见解,有些东西当时理解的不太透彻可能写错...

我爱吃炒鸡
今天
14
0
科技赋能成效显著!金融壹账通两大赋能项目荣获IDC大奖

7月19日,2019IDC中国未来金融论坛曁颁奖典礼于北京举办。由金融壹账通赋能的长春农商银行多人视频面审智能风控系统、包头农商银行互联网银行SaaS服务两大项目因在项目的创新性、技术领先性、...

IFTNews
昨天
1
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部