怎么定义指向ARM rom区相(当于51的code)的指针?

怎么定义指向ARM rom区相(当于51的code)的指针?,第1张

ARM和51的架构是不一样的,51系列单片机在C环境中"code"关键字会被自动编引向程序存储器,而ARM的程序中使用的是标准C(一般是GNU C),也就是说没有code、xbyte等这样的关键字。如果在ARM的C程序中欲定义指向ROM的指针,那么首先程序员必须自己清楚ROM在CPU外部总线上的映射地址,比如ROM的基地址为0xffc0_0000,那么直接定义 unsigned char/short/int/long * rom_pointer = 0xffc00000。那么访问的时候直接从rom_pointer中读或向这个指针所指的内容中写即可(前提是此ROM属于可擦除)。

如: *(rom_pointer + 8) = 0x00000000

unsigned long content = *(rom_pointer + 0x4)

ARM是32位的,所有寄存器都占四个字节,每条指令占四个字节,指令执行的过程:取址---->译码------->执行。这三步都是需要消耗时间的。指令在内存中一块连续内存空间中执行,所有指令像流水线一样执行,假如有多条指令按顺序执行。流水线:1.第一条指令进行取址。2.第一条指令译码,为了节约时间,在第一条指令译码的同时,第二条指令取址,地址为第一条指令地址加4. 3.第一条指令执行,同时第二条指令译码,第三条指令取址,地址等于第一条地址加8. 总结:这里的第一条指令等同于你说的A指令,它执行的时候,第三条指令正在取址,地址等于A指令地址加8.

8字节或4字节。64位处理器上64位 *** 作系统的32位编译器,指针大小是8字节,64位处理器上32位 *** 作系统的16位编译器,指针大小4字节,所以64位arm指针长度是8字节或4字节。英国ARM公司是全球领先的半导体知识产权提供商,全世界超过95%的智能手机和平板电脑都采用ARM架构。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/11789586.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-18
下一篇 2023-05-18

发表评论

登录后才能评论

评论列表(0条)

保存