+ -
当前位置:首页 → 问答吧 → 问下这个arm汇编和c混合编程,有点不懂

问下这个arm汇编和c混合编程,有点不懂

时间:2010-11-05

来源:互联网

@****************************************************************************** 
@ File:crt0.S 
@ 功能:通过它转入C程序 
@******************************************************************************  

.text 
.global _start 
_start: 
  ldr r0, =0x56000010  
  mov r1, #0x0  
  str r1, [r0]  
   
  ldr sp, =1024*4  
   
  bl main ;;;这里b转到main函数,那么#define GPBCON (*(volatile unsigned long *)0x56000010)有执行到吗??或者有时候定义了什么变量会执行到吗????

halt_loop: 
  b halt_loop 

  

#define GPBCON (*(volatile unsigned long *)0x56000010) 
#define GPBDAT (*(volatile unsigned long *)0x56000014) 

int main() 

  GPBCON = 0x00000400; // 设置GPB5为输出口, 位[11:10]=0b01 
  GPBDAT = 0x00000000; // GPB5输出0,LED1点亮 

  return 0; 

作者: yezhubenyue   发布时间: 2010-11-05

#define GPBCON (*(volatile unsigned long *)0x56000010)
这是伪指令。编译的时候有用。不会作为语句编译进代码里面的。当然不会执行到这里。

作者: usbdev   发布时间: 2010-11-05

它跟定义变量不一样。如果定义了变量,会在目标程序当中分配空间。

作者: usbdev   发布时间: 2010-11-05