码迷,mamicode.com
首页 > 其他好文 > 详细

arm汇编语法Demo

时间:2014-12-11 20:52:59      阅读:233      评论:0      收藏:0      [点我收藏+]

标签:blog   io   ar   使用   2014   log   代码   amp   as   

/*************************************************************************
    > File Name: inout.c
    > Author: zshh0604
    > Mail: zshh0604@.com 
    > Created Time: Wed 10 Dec 2014 02:47:50 PM
 ************************************************************************/

#include<stdio.h>

//	__asm__ __volatile__(
//			
//			); 


int main(void)
{
	/*************************************************/	
	//第一种访问寄存器的方式.
	//强制将变量将寄存器绑定.		
	//立即数前面必须加#
	register unsigned int a asm("r0");
	asm volatile(
			"mov r0,#30\n"  //该r0赋值为30.				
			);

	/************************************************/

	//第一个冒号后面只能声明输出变量或者输入输出变量.
	//第二个冒号后面只能声明输入变量.
	//第三个冒号后面只能声明需要保护的寄存器.
	//使用"=&r"声明一个输出变量.
	//使用"r" 声明一个输入变量.
	//使用"r+"声明一个输入输入变量.

	//在汇编中使用%0, %1,这样变量,他会自动绑定没有使用的寄存器.
	//%0和%1,会按照变量声明的顺序一次绑定.这里的%0会绑定到out, %1会自动绑定到out1.
	int out; int in_out; 
	int in=10;
	asm volatile(
			"mov r0,#30\n"              //该r0赋值为30.				
			"mov %0,r0\n"              				
			"mov %1,r0\n"              
			"mov r0,%2\n"              
			
			:"=r"(out), "r+"(in_out)    //声明一个输出,和输入输出变量.
			:"r"(in)              //声明输入变量.
			:"r0"                 //保护寄存器. 

			);

	/************************************************/
	
	//[a] [b] [in] 给声明的变量分别加上标记.
	//在汇编代码中可以使用这些标记.%0, %1,中的0,和1
	asm volatile(
			"mov r0,#30\n"                //该r0赋值为30.				
			"mov %[a],r0\n"                 			
			"mov %[b],r0\n"              
			"mov r0,%[in]\n"             
		
			:[a]"=r"(out), [b]"r+"(in_out)    //声明一个输出,和输入输出变量.
			:[in]"r"(in)              //声明输入变量.
			:"r0"                 //保护寄存器. 
			);
	/***************************************************/
	
	//r 为使用寄存器操作变量声明.
	//r 不加如何表示,表示的是输入变量,只能读,不能写.
	//r+ 表示输入输出变量.
	//=r 表示的是输出变量
	//& 表示输出变量.不会和输入变量公用一个寄存器.
	
	return 0 ;
}



arm汇编语法Demo

标签:blog   io   ar   使用   2014   log   代码   amp   as   

原文地址:http://blog.csdn.net/shaohuazuo/article/details/41871743

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!