*__far const
时间: 2023-06-05 17:47:44 浏览: 49
"*__far const" 是C语言中的一种数据类型声明,用于指定一个常量变量的内存位置。
在C语言中,const关键字用于定义不可修改的常量变量,即一旦定义后就不允许再修改其值。而"*__far"则用于指定常量存储的内存区域。在16位和32位的环境中,采用了分段式内存管理,一个内存地址需要用两个字(word)来存储。
"*__far const"即表示一个位于远端数据段(const)的常量变量,需要两个字才能完整表示其内存地址。这种类型的数据变量通常用于在大型程序中访问分段式内存时,确保程序能够正确地读取和修改对应变量的值。
总之,"*__far const"是一种高级的C语言数据类型声明,能够指定常量存储位置并保证程序在访问内存时能够正确操作。
相关问题
static void pvq_pyr_project(const Word16 dim_proj, /* end vector dimension+1 */ const Word16 *xabs, /* absolute vector values */ Word32 L_xsum, /* absolute vector sum over dim */ Word16 num, /* target number of pulses */ Word16 * y, /* projected output vector */ Word16 *pulse_tot_ptr, Word32 *L_xy_ptr, /* accumulated correlation Q(in+0+1) = Qin+1 */ Word32 *L_yy_ptr /* accumulated energy Q0 */ ) { // pvq_pyr_project(dim, xabs, L_xsum, pulses_proj[0], y_far, &pulse_tot_far, &L_xy, // &L_yy); /* outlier submode projection */ Dyn_Mem_Deluxe_In( Counter i; Word32 L_tmp, L_num; Word16 den, shift_num, shift_den, shift_delta, proj_fac; ); *pulse_tot_ptr = 0; move16(); *L_xy_ptr = L_deposit_l(0); *L_yy_ptr = L_deposit_l(0); shift_den = norm_l(L_xsum); /* x_sum input Qin */ den = extract_h(L_shl_pos(L_xsum, shift_den)); /* now in Qin+shift_den */ L_num = L_deposit_l(num); shift_num = sub(norm_l(L_num), 1); L_num = L_shl_pos(L_num, shift_num); /* now in Q0 +shift_num -1 */ proj_fac = div_l(L_num, den); /* L_num always has to be less than den<<16 , norm_l-1 makes that happen */ shift_delta = sub(shift_num, shift_den); FOR (i = 0; i < dim_proj; i++) { L_tmp = L_mult(proj_fac, xabs[i]); /* Q shift_delta + PVQ_SEARCH_QIN */ y[i] = extract_h(L_shr(L_tmp, shift_delta)); move16(); /* to Q0 with floor , and potential sturation */ ; *pulse_tot_ptr = add(*pulse_tot_ptr, y[i]); /* Q0 */ *L_yy_ptr = L_mac0(*L_yy_ptr, y[i], y[i]); /* Energy, Q0 */ *L_xy_ptr = L_mac(*L_xy_ptr, xabs[i], y[i]); /* Corr, Q0*Q12 +1 --> Q13 */ } Dyn_Mem_Deluxe_Out(); }
这是一个静态函数,函数名为 `pvq_pyr_project`,接受多个参数:
- `dim_proj`:维度大小。
- `xabs`:绝对向量值。
- `L_xsum`:绝对向量总和。
- `num`:目标脉冲数。
- `y`:投影输出向量。
- `pulse_tot_ptr`:脉冲总数指针。
- `L_xy_ptr`:累积相关性指针。
- `L_yy_ptr`:累积能量指针。
该函数的作用是将输入向量进行投影,得到输出向量。具体实现过程为:
- 对输入向量进行归一化,得到一个分母 `den` 和一个除数 `proj_fac`。
- 对每个向量元素进行投影,得到输出向量 `y`。
- 计算脉冲总数、累积相关性和累积能量,并将其保存在指针中。
该函数的实现与定点数学有关,包含了左移、右移、乘法、除法等操作。
Uncaught (in promise) invalid distance too far back
"Uncaught (in promise) invalid distance too far back"是JavaScript中的一个错误,通常在使用zlib库时出现。这个错误的原因是zlib库试图解压缩一个无效的数据块,导致解压缩失败。解决这个问题的方法是检查数据块是否有效,或者使用其他解压缩库。
以下是两种可能的解决方法:
1. 检查数据块是否有效
```javascript
// 假设data是要解压缩的数据块
const zlib = require('zlib');
const buffer = Buffer.from(data);
if (!zlib.inflateRawSync(buffer)) {
console.error('Invalid data block');
}
```
2. 使用其他解压缩库
```javascript
// 使用pako库代替zlib库
const pako = require('pako');
const buffer = Buffer.from(data);
const result = pako.inflateRaw(buffer);
```