小编Phi*_*ias的帖子

如何在for循环中获取变量的数量?

考虑以下代码:

int main() {
    int a = 0;
    int b = 1;

    for (int i = 0; i < 3; i++) {
        a = 2;
        int c = 1;
        int d = 3;
        d = a + c;
    }

   a = b+2;
}
Run Code Online (Sandbox Code Playgroud)

在上面的代码段中,三个变量的生命周期包含在循环体(i,cd)中.我希望能够使用LLVM计算任何给定循环体中存在寿命的变量(即对于此循环,我的代码应该返回3).

我找到了实时变量分析,但是我无法使用它来查找我上面描述的内容.

c c++ llvm

12
推荐指数
1
解决办法
569
查看次数

在MATLAB中生成随机向量

我正在尝试生成随机频谱,然后用于ifft查找相应的时域向量.

我正在使用以下代码:

for i = 1:64
    randNum = (rand() + 1i * rand())/sqrt(2); % Needs to be normalized by sqrt(2)
    randFreq(i) = randNum;
end

randVec = ifft(randFreq);
Run Code Online (Sandbox Code Playgroud)

请注意,我知道mvnrnd,但由于技术原因,我需要使用for循环并单独生成每个元素.我还需要生成随机频谱然后使用逆变换,我不能在时域中直接生成随机向量.

如果我绘制随机向量(plot(abs(randVec)))的大小,我总是得到这种形式的图形.

在此输入图像描述

总是有一个尖峰,n=0所有其他元素的数量都要小得多.我希望能够深入了解为什么会这样.

我的问题不是在向量Matlab创建随机值的重复,它们是恰好在同一主题上的完全不同的问题.我特别询问我的行为ifft.它也不是我的逆傅立叶变换中尖峰的重复.在那个问题中,峰值可能是由数据的某些特性引起的,但在我的情况下,数据是完全随机的.

algorithm math matlab signal-processing fft

5
推荐指数
1
解决办法
83
查看次数

为什么Clang会自动为我的函数添加属性?

我有一段代码,我正试图变成LLVM bitcode:

int main() {
    volatile double n = 0.45;
    for (int j = 0; j < 32; j++) {
        n *= j;
    }
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

我对它运行以下命令:

clang -O0 -S -emit-llvm TrainingCode/trainingCode.cpp -o TrainingCode/trainingCode.ll
Run Code Online (Sandbox Code Playgroud)

生成以下LLVM bitcode(注意第6行,带有"Function Attrs"的行):

; ModuleID = 'TrainingCode/trainingCode.cpp'
source_filename = "TrainingCode/trainingCode.cpp"
target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
target triple = "x86_64-unknown-linux-gnu"

; Function Attrs: noinline norecurse nounwind optnone uwtable
define i32 @main() #0 {
entry:
  %retval = alloca i32, align 4
  %n = alloca double, align 8
  %j …
Run Code Online (Sandbox Code Playgroud)

c c++ assembly llvm compiler-optimization

3
推荐指数
2
解决办法
879
查看次数

如何在没有函数调用的情况下在 Linux 中检索处理器时间?

我需要计算一部分(C++)代码的运行时间,并希望通过查找代码执行过程中经过的时钟滴答数来实现这一点。

我想找到代码开头的处理器时间和结尾处的处理器时间,然后减去它们以找到经过的滴答数。

这可以通过时钟功能来完成。然而,我测量的时间需要非常精确,并且使用函数调用被证明是非常具有侵入性的,因为调用者保存的寄存器分配器在每次调用时都会溢出许多变量。

因此,我不能使用任何函数调用,需要自己检索处理器时间。汇编代码没问题。

我正在使用 Debian 和 i7 Intel 处理器。我不能使用分析器,因为它太具有侵入性。

c c++ unix linux assembly

-2
推荐指数
1
解决办法
264
查看次数