问题标签 [nop]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
execution-time - 处理器指令周期执行时间
我的猜测是,
__no_operation()
内在(ARM)指令应该花费 1/(168 MHz)来执行,前提是每个NOP
指令都在一个时钟周期内执行,我想通过文档进行验证。是否有关于处理器指令周期执行时间的信息的标准位置?我正在尝试确定 STM32f407IGh6 处理器执行运行在 168 MHz 的 NOP 指令需要多长时间。
有些处理器需要每个指令周期多次振荡,有些处理器在比较时钟周期和指令周期时是一对一的。
术语“指令周期”甚至没有出现在 STMicro 提供的整个数据表中,也没有出现在他们的编程手册中(列出处理器的指令集,顺便说一句)。然而,8051 文档清楚地定义了它的指令周期执行时间,以及它的机器周期特性。
java - 获取 slf4j NOP 实现以登录到控制台
我希望slf4j NOP
实现登录到控制台。目前,它只是不记录任何内容,而是有办法让它记录到控制台吗?
我的用例是我有一个库(不是应用程序),它只依赖于slf4j-api
. 但是其中的一些类具有用于测试目的的主要方法。当我运行这些主要方法时,我希望所有日志都转到控制台,而不必依赖slf4j-log4j
绑定。
谢谢。
assembly - 如何获得可靠的 Cortex M4 短延迟
我正在将一些代码从 M3 移植到 M4,它使用 3 个 NOP 在串行输出时钟更改之间提供非常短的延迟。M3 指令集将 NOP 的时间定义为 1 个周期。我注意到 M4 中的 NOP 不一定会延迟任何时间。我知道我需要禁用编译器优化,但我正在寻找一个低级命令,它会给我可靠的、可重复的时间。实际上,在这种特殊情况下,串行使用非常偶尔并且可能非常慢,但我仍然想知道获得周期级延迟的最佳方法。
c - GCC 编译器执行 asm volatile ("nop"/::) 指令需要多长时间?
我在 UNIX 中有一个 C 代码,我需要让我的处理器在 2 秒内什么都不做。为此,我找到了汇编指令asm volatile("nop"::)。我已经搜索了很多,但我找不到任何地方解释如何计算必要的 NOP 数量以执行我的函数恰好 2 秒。谁能帮我?
arduino - 如何创建 1 秒延迟 Arduino
嗨,我是 Arduino 新手,我正在尝试创建 1 秒的延迟,但我不知道如何生成完成 delay_ms 函数的代码,我尝试过解决但似乎没有得到任何更好的谢谢你 void setup() {
assembly - 长多字节 NOP:通常理解的宏或其他表示法
x86(和 x86_64)处理器不仅有单字节NOP
指令,而且还有各种类型的多字节类 NOP 指令,这已经不是什么大秘密了。
这些是我设法找到的:
AMD 推荐,参考文献。AMD 系列 15h 处理器的 AMD 软件优化指南,文档 #47414,第 5.8 节“使用操作数大小覆盖和多字节 NOP 进行代码填充”,第 94 页)
英特尔推荐,参考。英特尔 64 和 IA-32 架构软件开发人员手册第 2B 卷:指令集参考,新西兰,“NOP”部分
GNU 汇编器(在 binutils/gas 中)包括以下模式:
f32(兼容 Intel 的旧 CPU,最高到 Pentium):
alt(对于现代 CPU,对于 Intel 和 AMD 相同):
alt_short(适用于现代 AMD 系列 CPU):
alt_long(适用于现代 Intel 系列 CPU):
我的问题如下:所有这些字节序列是否有任何广泛/通用的命名,如宏、伪助记符或类似的东西?到目前为止,我只发现:
- AMD 建议命名它们
NOPx_OVERRIDE_NOP
(x
= 字节长度)。 - gas 理解
nopw
(作为 2 字节 nop)和nopl
(作为 4 字节 nop)
现代反汇编程序如何倾向于输出这些值?
相关但不重复的问题:NOPL 在 x86 系统中做了什么?
c - 等效于嵌入式 C 中的 NOP?
我使用KEIL编译程序。
该程序使用代码
asm("NOP");
不幸的是,KEIL 编译器不接受该声明。
这个想法是通过使用 NOP(无操作)汇编代码来引入延迟。
这在 C 中的实际等价物是什么?这是否因我使用的嵌入式控制器而异?
c - 在 x86_64 和 i686 上编译时 NOP 字符 0x90 的 printf 不同
我有2个系统:
- 3.13.0-35-generic ... x86_64 x86_64 x86_64 带有 gcc 的 GNU/Linux:4.8.2
- 2.6.32-21-generic #32-Ubuntu ... i686 GNU/Linux with gcc: 4.4.3
我在两个系统上编译了以下代码:
问题是“nops”数组的打印。
- 当我在 64 位系统 #1 上运行它时,输出看起来正是我想要的样子。
- 当我在 32 位系统 #2 上运行它时,printf() 输出的 NOP 部分包含额外的奇怪字符,即:
Hexdump 系统 #1
Hexdump 系统 #2:
所以附加字符是:0x24 0xc5 0x12。
[问] 为什么会这样?
谢谢。
nop - C代码NOP混淆
该文件采用 AT&T 语法 - 请参阅http://www.imada.sdu.dk/Courses/DM18/Litteratur/IntelnATT.htm 和http://en.wikipedia.org/wiki/X86_assembly_language#Syntax。gdb 和 objdump 默认生成 AT&T 语法。
最后一条指令 NOP 运行时 %eax 的值是多少?
x86 - x86 多字节 NOP 和指令前缀
回想一下,x86 架构定义0x0F 0x1F [mod R/M]
为多字节 NOP。
现在我正在查看 8 字节 NOP 的具体情况:我有
最后 5 个字节有任意值。
第三个字节 ,[mod R/M]
分开给出:
mod = 10b
: 参数是reg1
+ 一个 DWORD 大小的位移reg2 = 000b
: (我们不在乎)reg1 = 100b
: 表示参数是SIB
字节 + DWORD 大小的位移。
现在,作为一个具体的例子,如果我采取
我有
SIB = 0x12
displacement = 0x9A785634
: 一个双字
现在我添加0x66
指令前缀以指示位移应该是 WORD 而不是 DWORD:
我希望0x78 0x9A
被“切断”并被视为新指令。但是,当编译它并objdump
在生成的可执行文件上运行时,它仍然使用所有 4 个字节(一个 DWORD)作为位移。
在这种情况下,我是否误解了“位移”的含义?还是0x66
前缀对多字节 NOP 指令没有任何影响?