问下这个arm汇编和c混合编程,有点不懂
@******************************************************************************@ File:crt0.S
@ 功能:通过它转入C程序
@******************************************************************************
.text
.global _start
_start:
ldr r0, =0x56000010
mov r1, #0x0
str r1,
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为输出口, 位=0b01
GPBDAT = 0x00000000; // GPB5输出0,LED1点亮
return 0;
} 求解 你需要看C语言相关知识,#define是预处理器处理的语句,你列出来的那句意思是凡是那个C源文件里出现的GPBCON都替换成
(*(volatile unsigned long *)0x56000010)这个事情是预处理器做的,编译器并不参与。给你推荐本书《c和指针》
页:
[1]