gpt4 book ai didi

c - MPLAB XC16 : Mixing C and Assembly

转载 作者:行者123 更新时间:2023-11-30 15:12:25 24 4
gpt4 key购买 nike

我正在尝试混合一些 C 语言和汇编语言,但我玩得很开心。我对 C 语言有一定的经验,对汇编也有一定的经验,但我以前没有在同一个项目中使用过它们。

目前,我正在尝试编译最简单的项目,即 Q1.15 定点乘法。我实际上并不关心代码输出,我只是需要编译一些东西,以便我可以基于它进行构建。

myq15.h:

#ifndef _Q15_MATH
#define _Q15_MATH

#include <stdint.h>

typedef int16_t q15_t;

extern q15_t q15_mul(q15_t multiplicand, q15_t multiplier);
q15_t q15_add(q15_t addend, q15_t adder);

#endif

myq15.c

#include "myq15.h"

q15_t q15_add(q15_t addend, q15_t adder){
int32_t result = (uint32_t)addend + (uint32_t)adder;

if(result > 32767) result = 32767;
else if(result < -32768) result = -32768;

return (q15_t)result;
}

myq15.s:

    .include "xc.inc"

.text
.global _q15_mul

_q15_mul:
; w3:w2 = w1 * w0
mul.ss w0, w1, w2

; w0 = (w3:w2) >> 15
rlc w2, w2
rlc w3, w3

; w0 = w3
mov w3, w0

return

.end

我的“主”文件仅调用 q15_add() 和 q15_mul() 实例。

编译时,链接器状态:

build/default/production/_ext/608098890/myq15.o(.text+0x0): In function `_q15_mul':
: multiple definition of `_q15_mul'

我再次尝试找出如何混合汇编和 C 文件用于其他目的,但如果我无法让这个简单的程序工作,我就绝望了!

谢谢

最佳答案

将文件命名为相同的名称是一个坏主意,因为 myq15.cmyq15.s 都编译为 myq15,工具链可能会混淆它们.o 默认情况下。

关于c - MPLAB XC16 : Mixing C and Assembly,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35090797/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com