小编Bar*_*ekS的帖子

C 编译器输出的此代码中的 MOVZX、CDQE 指令的含义/用途是什么?

我有以下 C 代码段:

int main() {

    int tablica [100];
    bool visited [100];
    int counter;
    int i;

    for(i=0;i<=99;i++) {
        if (visited[i]==0) {
            counter=counter+1;
        }
    }

}
Run Code Online (Sandbox Code Playgroud)

我将其转换为汇编程序。我收到以下输出:

   ; ...

    mov     eax, DWORD PTR [rbp-8]
    cdqe
    movzx   eax, BYTE PTR [rbp-528+rax]
    xor     eax, 1
    test    al, al
    je      .L3

    ; ...
Run Code Online (Sandbox Code Playgroud)

任何人都可以向我解释这段代码中CDQEMOVZX指令的含义和目的是什么?我也不明白XOR指令的用途是什么。

64-bit x86 assembly x86-64

3
推荐指数
1
解决办法
6993
查看次数

标签 统计

64-bit ×1

assembly ×1

x86 ×1

x86-64 ×1