Codewarrior汇编中的XDEF和XREF释疑

本文介绍在Freescale的codewarrior环境中如何通过XDEF和XREF实现不同文件间的函数调用,并详细展示了C语言与汇编语言相互调用的方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

      在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

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值