在 C 语言和汇编语言混合编程时,TI 公司的 TMS32C55x 系列 DSP 的 C 程序 和汇编程序之间通过寄存器或堆栈来传递数据。请写出混合编程时下面子程序的 返回参数和入口参数的放置位置。struct st_a functionD( folat* x, int* y, int z, long w); struct st_b functionE( folat* x, int y, int z, long* w, …);
时间: 2023-06-14 22:03:46 浏览: 164
2022年'Cx的汇编语言程序设计.pptx
在 TMS32C55x 系列 DSP 中,C 语言和汇编语言混合编程时,函数的参数传递方式可以通过寄存器或者堆栈来完成。下面是两个函数的参数放置位置:
1. 函数 functionD 的参数放置位置
函数 functionD 的参数包括一个浮点数指针 x,一个整型指针 y,一个整型变量 z 和一个长整型变量 w,因此参数的放置位置如下:
- 浮点数指针 x 放置在 R0 中,即 a0;
- 整型指针 y 放置在 R1 中,即 a1;
- 整型变量 z 放置在 R2 中,即 a2;
- 长整型变量 w 放置在 R3 中,即 a3。
函数 functionD 的返回值是一个结构体 st_a 类型的变量,因此返回值应该是放置在 R4-R7 中,即 a4-a7。
2. 函数 functionE 的参数放置位置
函数 functionE 的参数包括一个浮点数指针 x,一个整型变量 y,一个整型变量 z,一个长整型指针 w,和一些其他的参数(省略号表示),因此参数的放置位置如下:
- 浮点数指针 x 放置在 R0 中,即 a0;
- 整型变量 y 放置在 R1 中,即 a1;
- 整型变量 z 放置在 R2 中,即 a2;
- 长整型指针 w 放置在 R3 中,即 a3;
- 其他的参数按顺序依次放置在堆栈中。
函数 functionE 的返回值是一个结构体 st_b 类型的变量,因此返回值应该是放置在 R4-R7 中,即 a4-a7。
阅读全文