c - 函数指针属于哪个缓存?

标签 c caching x86 arm intel

在 C 语言中,如果我有一个函数指针

int (*f_ptr) (int)

它将在指令缓存中还是在数据缓存中?在这些缓存中找到 f_ptr 我不会感到惊讶。有一种方法可以在 Linux 下使用 perf 进行调试,有点像数据缓存、指令缓存和翻译后备缓冲区的鸟瞰图?

最佳答案

函数执行时,函数代码会进入指令缓存。

但我假设您正在谈论函数指针变量本身。由于它是一个变量,因此它最终会出现在数据缓存中。它只是一个包含地址的变量。简而言之,就是一个指针。

关于c - 函数指针属于哪个缓存?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30785882/

相关文章:

c - 在 C 中按长度对字符串进行排序

asp.net - 负载平衡中的 EnterpriseLibrary 缓存

performance - 英特尔Skylake的商店循环出乎意料的差和奇怪的双峰性能

x86 - 如何知道一个中断是硬件中断还是cpu异常

assembly - assembly 中的双重条件检查

c - 在 Linux 上从 #include 生成 GCC 选项

检查设备 "connected"/是否可用

caching - 如何缓存Travis CI中已通过 `apt-get`安装的软件包?

c - 将结构体写入缓冲区

c# - ASP.NET MVC 3/Razor - 奇怪的缓存问题