小编Wel*_*riv的帖子

ARM Cortex-M4 中是否有缓存?

我想知道ARM Cortex-M4内部是否有缓存。

我在技术参考手册中没有找到任何线索,但这是官方的还是隐藏的?我知道有些微控制器有缓存,但它位于总线和 RAM 之间,而不是内核内部。

你知道有什么文件可以澄清这一点吗?

microcontroller caching arm cpu-cache cortex-m

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

链接器:链接文件的“NMAGIC”部分是什么?部分对齐的目的是什么?

老男人在这里说

-n --nmagic 关闭节的页面对齐,并将输出标记为“NMAGIC”(如果可能)。-N --omagic 将文本和数据部分设置为可读可写。另外,不要对数据段进行页面对齐,并禁用对共享库的链接。如果输出格式支持 Unix 风格幻数,请将输出标记为“OMAGIC”。注意:虽然 PE-COFF 目标允许有可写文本部分,但它不符合 Microsoft 发布的格式规范。--no-omagic 该选项取消了 -N 选项的大部分效果。它将文本段设置为只读,并强制数据段页对齐。注意 - 此选项不启用对共享库的链接。为此,请使用 -Bdynamic。

我确实明白这些选项用于使代码(.text)部分可写或不可写,但我不明白对齐或不对齐这些部分的意义,以及什么是“NMAGIC”部分

ld

2
推荐指数
1
解决办法
1722
查看次数

为什么在C和C++中结构初始化的这种不同行为?

代码:

#include <stdio.h>

typedef struct{
  int i;
  int tab[];
}mystr;

mystr a = {1,{0,1,2}};

int main(void){
  printf("%d%d%d\n",a.i,a.tab[0],a.tab[1]);
  return 0;
}
Run Code Online (Sandbox Code Playgroud)

C编译:

$ gcc main.c -o main && ./main
101
Run Code Online (Sandbox Code Playgroud)

C++编译:

$ g++ main.c -o main && ./main
main.c:8:27: error: too many initializers for ‘int [0]’
 const mystr a = {1,{0,1,2}};
                           ^
Run Code Online (Sandbox Code Playgroud)

我明白这个问题,就是tab没有分配任何内存.但为什么这对C来说没问题呢?为什么C++不会自动为内存空间分配tab?我知道结构类似于C++中的对象,但可能有一些我不了解全局对象实例化的细微之处?

c c++ gcc

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

标签 统计

arm ×1

c ×1

c++ ×1

caching ×1

cortex-m ×1

cpu-cache ×1

gcc ×1

ld ×1

microcontroller ×1