yezhubenyue 发表于 2010-11-4 22:37:22

问下这个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;
}

yezhubenyue 发表于 2010-11-4 22:37:33

求解

luo496724812 发表于 2010-11-6 01:33:04

你需要看C语言相关知识,#define是预处理器处理的语句,你列出来的那句意思是凡是那个C源文件里出现的GPBCON都替换成
(*(volatile unsigned long *)0x56000010)这个事情是预处理器做的,编译器并不参与。给你推荐本书《c和指针》
页: [1]
查看完整版本: 问下这个arm汇编和c混合编程,有点不懂