使用编译器生成汇编包含文件
发表:2023-08-29 11:59:48 阅读:47

使用编译器生成汇编包含文件:在有些时候需要同时使用C语言与汇编语言编程,各自都有优缺点,然而C编译器无法读取汇编的包含文件*.inc,汇编器也无法读取C语言的头文件*.h。通过相关设置,可以让编译器生成符合汇编格式并包含C语言头文件信息的汇编包含文件。从*.h到术.inc的转换中,将C语言的宏定义#define、枚举、typedef类型定义、函数、变量以及注释转换成汇编伪指令EQU和外部引用XREF。

为了能让编译器自动生成汇编包含文件,需要设置编译器选项_La(compiler for HC08→Options→Output→Generate Assembler Include File)。同时在需要转换的C语言头文件术*.h中,将需要转换的部分用预处理指令对#pragma 4—ASM—LISTING ON与#pragIna4_ASM_LISTING OFF包含起来。实例步骤:

(1)新建C语言头文件a.h。

#pragma 4_ASM_LISTING ON

typedef struet{

short i;

short j;

}Struct—test;

Struct——test Var;

void f(void);

#pragma 4—ASM—LISTING OFF

(2)新建源文件a.c。为了能对头文件单独编译,新建的*.c文件只有一句:#include"a.h"。

(3)设置编译器选项一La:Compiler for HC08→Options→Output→Generate Assembler In→clude File,并指定生成的汇编包含文件名:a.inc。

(4)在a.c文件上单击右键并选择Compile。最后在项目\bin目录生成的*.inc文件内容如下:

Struct_test_SIZE EQU $ 4

Struct_test_i EQU $ 0

Struct_test_j EQU $ 2

XREF Var

Var_i EQU Var+$0

Var_j EQU Var+$ 2

XREF f

 

阅读更多请您关注:

编译器的输入/输出文件

给全局变量定义绝对地址的方法

采用宏定义的方法实现高级语言内嵌汇编编程

freescale代理

推荐品牌: