从c ++程序访问ASM文件中的函数?

Ste*_*ven 0 c++ embedded assembly microchip

今天敲我的头;)

在这里,我询问了如何将ASM文件转换为C,并且从响应中看起来没有合理的方法来执行它.精细.因此,其中一个回复建议我只是按原样使用函数并完成它.听起来不错.

但是怎么样?

神圣的废话我已经尝试了我能想到的一切!我正在使用Microchip品牌的MCU(PIC18F4480)和Microchip品牌的IDE(MPLAB IDE),而ASM文件是Microchip编写的...所以你认为我会找到一些方法来使用它们!到目前为止还没有运气.

我对ASM(汇编)一无所知.我用C++编写代码,坦率地说,这不会改变.必须有一种方法可以访问Microchip ASM文件中的函数,而无需用新语言重写我的所有代码.

如果有人想看看,ASM文件和应用笔记就在这里.

Mar*_*wis 6

看看PIDInt.asm,从C/C++调用函数应该是相当简单的.首先,为VARIABLE DEFINITIONS中列出的所有内容声明外部变量:

extern unsigned char error0, error1; /* etc */
Run Code Online (Sandbox Code Playgroud)

然后,为所有具有"Function:"注释的事物声明extern函数,不带参数并且不返回任何结果:

extern void Proportional(); // extern "C" for C++
Run Code Online (Sandbox Code Playgroud)

要调用其中一个,请填充输入变量,调用函数,然后读取输出变量.


unw*_*ind 5

我希望你需要以某种方式从汇编代码构建一个对象(.o)文件,然后将你的C++文件链接到该目标文件.您可能需要将这些函数声明为extern "C"从C++调用它们.

这里不详细说明,C++和汇编之间的调用约定可能存在问题,特别是对于像PIC这样的微控制器.

您是否真的在为微控制器使用完整的C++功能集,即对象,虚函数,重载等?那是......不错,但我认为大多数PIC开发仍然是普通的C(当然还有汇编).