gpt4 book ai didi

正在编译 GCC NOP

转载 作者:行者123 更新时间:2023-12-04 19:42:52 29 4
gpt4 key购买 nike

从我通常的 VC++ 领域冒险进入 GCC 的世界(通过 MINGW32)。试图创建一个主要由 NOP 组成的 Windows PE,ala:

for(i = 0; i < 1000; i++)
{
asm("nop");
}

但是要么我使用了错误的语法,要么编译器正在通过它们进行优化,因为这些 NOP 无法在编译过程中幸存下来。

我正在使用 -O0 标志,否则为默认值。关于如何诱使编译器保持 NOP 完好无损的任何想法?

最佳答案

您是否希望它将循环展开为 1000 nop s?我用 gcc 做了一个快速测试,我没有看到(一个)nop 消失了:

        xorl    %eax, %eax
.p2align 4,,7
.L2:
#APP
nop
#NO_APP
addl $1, %eax
cmpl $1000, %eax
jne .L2

使用 gcc -S -O3 -funroll-all-loops 我看到它展开循环 8 次(因此是 8 nop ),但我认为如果你想要 1000,它最容易做到:
#define NOP10() asm("nop;nop;nop;nop;nop;nop;nop;nop;nop;nop")

然后使用 NOP10(); ...

关于正在编译 GCC NOP,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4567220/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com