Codewarrior汇编中的XDEF和XREF释疑

      在Freescale的codewarrior汇编程序中,在主函数文件和外部文件中怎样定义,才能在主

函数中调用外部文件中的函数呢?

      其实可以用XDEF和XREF方式定义。XDEF用于定义一个可以被外部调用的函数,XREF用于

该文件调用外部函数,类似C语言中的头文件,在uc/os-ii对飞思卡尔单片机的移植范例中就使用

到了这两个伪指令。具体应用如例所示:
在file1中 (caller):
            XREF FUNC_1
MainLoop:
            NOP
            JSR FUNC_1
            BRA MainLoop

在file2中(callee):
            XDEF FUNC_1
FUNC_1:
            NOP
            RTS 

 

一、当C语言调用汇编语言时,采用如下的方法:

      1、汇编源程序中:

XDEF ASMData, ASMConst ;声明 ASMData, ASMConst 可以在模块外访问

MyData: SECTION

ASMData: DS.W 1        ; 定义变量

MyConst: SECTION

ASMConst: DC.W $44A6   ; 定义常量

      2、在C语言源程序中:

#pragma DATA_SEG MyData    /* 定义变量段 */

extern int ASMData;        /* 变量 ASMData 是外部模块声明的 */

#pragma DATA_SEG DEFAULT   /* 返回默认变量段 */

#pragma CONST_SEG MyConst  /* 定义常数段 */

extern const int ASMConst; /* 常量 ASMConst 是外部模块声明的*/

#pragma CONST_SEG DEFAULT  /*返回默认常数段  */

 

二、当汇编语言调用C语言时,采用如下的方法:

       1、C语言源文件中:

unsigned int CData;        /* 定义变量 */

unsigned const int CConst; /* 定义常量 */

      2、在汇编语言源文件中:

XREF CData                 ; 外部声明的变量

XREF CConst                ; 外部声明的常量

使用:

LDD CConst

STD CData

 

 

你可能感兴趣的:(Codewarrior汇编中的XDEF和XREF释疑)