c - asm ("nop");作品?

标签 c assembly

我从 http://en.wikipedia.org/wiki/NOP 中红色定义但我仍然需要一个更简单的定义。

我偶然发现了一段代码,但我不知道它到底做了什么:

switch (Something)
    {

        case this_one:
            asm ("nop");
            break;
        case other_one:
            asm ("nop");
            break;
        default:
            asm ("nop");
            break;
    }

最佳答案

nop 是一条什么都不做的汇编指令——几乎什么都不做,但仍然执行一条机器指令,这意味着(可能)有非常小的时间流逝(这在某些实时应用程序中可能具有有限的值(value)。

在这种情况下,语句 asm("nop"); 对程序没有语义上的影响。我认为它可能存在的唯一原因是“强制”编译器不折叠代码路径,使 switch 语句的机器结构在您查看目标代码或反汇编机器代码或查看它时可见一个调试器。

关于c - asm ("nop");作品?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24359632/

相关文章:

linux - 如何在 QEMU 上的 GDB 中单步执行 ARM 程序集?

linux - 如何调试需要用户输入的 NASM 汇编程序?

在 ANSI C 中转换动态分配的任意指针数组

c - 使用指针在字符串中出现单词

c - 关于 AT&T 汇编语法 (%esp,1)

linux - 是否可以更新现有内存映射的标志?

c - Linux 汇编和 printf

c - 无法通过cmd2运行c程序

c - Quake 反平方根 : accuracy

c++ - 多处理和文件操作?