首页 > 编程语言 >lesson04-设计初始化bss段、读写寄存器值的汇编函数

lesson04-设计初始化bss段、读写寄存器值的汇编函数

时间:2024-09-13 22:26:17浏览次数:8  
标签:函数 get32 global unsigned bss lesson04 put32 寄存器 x0

在内核启动时需要将bss段的所有数据清0,这里就需要memzero函数。

.global memzero    ;全局可见
memzero:
    str xzr, [x0], #8  
    subs x1, x1, #8
    b.gt memzero
    ret

内核启动时需要经常读写soc内部寄存器的值,这里就需要用到对应的函数put32和get32。

.global put32
put32:
    str w1,[x0]     ;storage register 存储寄存器中的数据到内存中 x
    ret             ;x0是第一个参数 w1是第二个参数的低32位

.global get32
get32:
    ldr w0,[x0]     ;load register 将内存中的数据加载到内存中
    ret             ;x0为第一个参数 w0为返回的参数

.global delay
delay:
    sub x0, x0, #1  ;延迟函数
    bne delay
    ret

声明汇编函数的头文件,指定输入和输出的参数。

#ifndef _BOOT_H
#define _BOOT_H

//汇编函数的头文件
extern void delay(unsigned long);
extern void put32(unsigned long, unsigned int);
extern unsigned int get32(unsigned long);

#endif

标签:函数,get32,global,unsigned,bss,lesson04,put32,寄存器,x0
From: https://www.cnblogs.com/kirito-/p/18412997

相关文章

  • 单片机寄存器相关知识及应用(51单片机)
    在前面的STM32中我并没有直接对寄存器进行操作,而是通过固件库直接引用进行各个外设的配置和应用,现在,我开始进行寄存器的学习(51单片机)。我们先简单看一下80C51/52的微控制头文件 <REG52.h>一、字节寄存器定义定义了一系列的特殊功能寄存器,如P0、P1、P2、P3、PSW、ACC、B、......
  • VisualStudio 2022 找不到内存 反汇编 寄存器调试工具
    本文将告诉大家如何解决在VisualStudio2022的调试-窗口里面找不到内存、反汇编、寄存器这三个调试工具的问题找不到的原因是没有启用地址级调试只需要在“工具”(或“调试”)>“选项”>“调试”中选择“启用地址级调试”然后进行调试即可看到开启之后,即可在调试-窗口......
  • 寄存器映射及地址计算(STM32F407)
    上篇文章介绍了存储器映射(存储器映射(STM32F407)-CSDN博客),本文介绍寄存器映射的基本概念。1、寄存器映射简介寄存器是一类特殊的存储器,它的每个位都有特定的功能,可以实现对外设/功能的控制,给寄存器的地址命名的过程就叫寄存器映射。举个简单的例子,大家家里面的纸张就好比通用......
  • Cortex-A 寄存器组详细介绍
    一、引言        在嵌入式系统开发中,深入了解处理器的寄存器组是至关重要的。Cortex-A系列处理器作为高性能的处理器架构,其寄存器组在系统运行和编程中起着关键作用。本文将详细介绍Cortex-A寄存器组的各个部分,包括通用寄存器、特殊功能寄存器以及它们在编程中的应......
  • STM32的寄存器详解
    目录前言一、 STM32单片机寄存器概述1.寄存器的作用2.寄存器的分类二、STM32内核寄存器1.程序计数器(PC)2.堆栈指针(SP)3.链接寄存器(LR)4.控制寄存器(CONTROL)三、STM32外设寄存器1.GPIO寄存器2.USART寄存器3.TIM定时器寄存器4.ADC寄存器四、寄存器的访问方式......
  • GDB调试器使用指南:设置断点、单步调试和查看寄存器状态
    使用​ddd./eg​设置​​断点​​运行​​点击​run​​单步调试​Next​命令将执行到下一条指令。这包括在必要时执行整个函数。步骤命令将执行一步,如有必要,单步执行函数。对于单个非功能指令,Next​命令和Step​命令之间没有区别查看寄存器状态​Status→Registe......
  • STM32 GPIO 寄存器的配置
    32位配置寄存器:GPIOx_CRL,GPIOx_CRH32位数据寄存器:GPIOx_IDR,GPIOx_ODR32位置位/复位寄存器:GPIOx_BSRR16位复位寄存器:GPIOx_BRR32位锁定寄存器:GPIOx_LCKRGPIO寄存器详解CRL和CRH控制IO口,是四个位控制一个口,所以要两个32位的来控制16个口CRL32位端口配置低寄存器(GPIOx_......
  • java实现线性反馈移位寄存器实例
    题目:3级线性反馈移位寄存器C3=1时可有4种线性反馈函数,设其初始状态为(a1,a2,a3)=(1,0,1),输出由它们得到的密钥流,并分别利用生成的密钥流对明文“0x0123456789ABCDEF”进行加密,输出加密后的结果,再对密文进行解密,输出解密后的结果。1.分析相关题目详解:3级线性反馈移位寄存器......
  • STC89C52单片机外部中断与定时器中断寄存器配置分析
    参考:STC89C52手册摘自手册:中断系统是为使CPU具有对外界紧急事件的实时处理能力而设置的。当中央处理器CPU正在处理某件事的时候外界发生了紧急事件请求,要求CPU暂停当前的工作,转而去处理这个紧急事件,处理完以后,再回到原来被中断的地方,继续原来的工作,这样的过程称为中断。实现这种......
  • STM32寄存器操作、模板构建
    目录外设寄存器查找①名称②偏移地址③寄存器位表④位功能说明寄存器基本操作C语言的置位和清零具体方法设置GPIO流程给寄存器赋值带参数宏STM32F1xx芯片识别存储器映射寄存器映射让GPIOB端口的16个引脚输出高电平,要怎么实现?STM32寄存器映射C语言对寄存器的封装新建寄......