This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

求教:CCS5.5中C语言如何调汇编?

Other Parts Discussed in Thread: TMS320C6678

因为想在TMS320C6678上实现C语言调用汇编,所以先用软件仿真。C和汇编如下:

1、C语言部分

#include<stdio.h>
extern int addfunc();
void main()
{
addfunc();
}

2、汇编部分

.global _addfunc
_addfunc:
MVK.L1 1,A3
STW.D2T1 A3,*B15[3]

MVK.L1 2,A3
STW.D2T1 A3,*B15[4]

MVK.L2 0,B4
STW.D2T2 B4,*B15[5]

LDW.D2T2 *B15[3],B4
NOP 4
ADD.L2X B4,A3,B4
STW.D2T2 B4,*B15[5]

编译后出现如下错误:

由于我不会汇编,这些命令是通过C语言反汇编得出的。在工程里我添加了一个.asm文件。

因网上没有看见相关教程,时间又很紧迫,非常希望能够得到帮助!不知是什么原因出错了呢?

如果要学习汇编的命令,应该看手册的哪个章节(英文挺差的,不知该从何看起)?谢谢您了!

  • 参考附件的例程,其中有在c代码main中调用汇编。

    asm_example.rar
  • 你好,您的程序我测试了一下,运行非常好,不过我想问一下您是如何实现C语言和汇编之间的参数传递的呢?根据我的理解,一般使用.cproc来传递,但是请问您是怎么实现的?

    根据程序和测试结果,数据是通过A4和B4传入两个数组地址,如果使用A3、B3或者其他的通用寄存器,结果都是不对的。请问为什么必须使用A4和B4呢?

    谢谢你!

  • 你好,您的程序我测试了一下,运行非常好,不过我想问一下您是如何实现C语言和汇编之间的参数传递的呢?根据我的理解,一般使用.cproc来传递,但是请问您是怎么实现的? 
    根据程序和测试结果,数据是通过A4和B4传入两个数组地址,如果使用A3、B3或者其他的通用寄存器,结果都是不对的。请问为什么必须使用A4和B4呢?

    谢谢你!

  • 你好,我现在自己写了一个加法的汇编程序,然后使用C来调取,能够成功编译和运行,但是当我将这个代码放到一个比较大的C++工程里的时候,程序却一直报识别不到函数名的错误,请问该如何解决呢?

    我的测试程序如下

    我的CPP工程截图如下所示,其中未打开的文件夹都是大量的CPP类以及实现:

    我的主函数为:

    #include <stdlib.h>
    #include <stdio.h>
    #include <time.h>
    #include "TAppDecTop.h"
    
    extern "C" int asm_add(int a ,int b);
    
    bool g_md5_mismatch = false; ///< top level flag that indicates if there has been a decoding mismatch
    
    // ====================================================================================================================
    // Main function
    // ====================================================================================================================
    
    int main(int argc, char* argv[])
    {
    
      int a=5;
      int b=4;
      int i=0;
      i=asm_add(a,b);
      printf("i:%d\n",i);
    
      return EXIT_SUCCESS;
    
    }
    

    提示的错误是这样的:

     undefined first referenced         
      symbol       in file              
     --------- ----------------         
     asm_add   ./TAppDecoder/decmain.obj
    
    error #10234-D: unresolved symbols remain
    error #10010: errors encountered during linking; "Dm642Hevc2.out" not built

    我平拼搏了一晚上也没解决,希望您能指点一下。

    谢谢!