大灰狼笔记三-堆栈

本文深入探讨了CPU运行程序时使用堆栈的原理及操作,包括堆栈的数据结构、SS和SP寄存器的作用、入栈出栈指令及其工作方式,以及如何避免栈顶超界带来的数据损失。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

大灰狼之三——堆栈
      CPU运行程序时需要将程序的局部变量或是参数存放在堆栈段中。堆栈是一种先进后出的数据结构,具体表现在内存中,也就是将一段连续的内存当做堆栈从高位向低位存放数据。
      由于堆栈的数据都存放在内存中,CPU要访问内存中的数据,自然要通过寄存器。因此也就有了存放堆栈数据在内存中地址的寄存器,SS和SP寄存器。SS储存堆栈段的基地址,SP存放堆栈段的偏移地址。而SS:[SP]永远指向栈顶。
      有了堆栈,也就有入栈出栈的操作。
      入栈:PUSH AX 

      把AX寄存器的内容入栈。


      由于在内存中是以一个字节为单位进行数据存储的,而寄存器中包含两个字节,因此,入栈后寄存器中的内容要占据两个内存单位。而也正因为如此,SP指针每次在进行入栈操作后要进行减2操作。入栈是从高位向低位存放数据。
      出栈:POP AX
      把栈顶SS:[SP]的数据赋给AX寄存器。
      出栈后新的栈顶地址是SP-2

      当栈满时入栈或是栈空时出栈都会造成数据的错误,叫做栈顶超界。由于堆栈段的低位是数据段,高位是代码段,因此很有可能在栈顶超界时对这两个段进行覆盖和读取,造成数据的损失或是错误。而8086CPU没有保证对栈的操作,因此需要程序员自己对栈进行维护。


### 灰狼优化算法 GWO 结合 BP 神经网络实现方式 #### 原理概述 灰狼优化算法(Gray Wolf Optimizer, GWO)结合BP神经网络(Back Propagation Neural Network, BPNN),即GWO-BP,旨在通过模拟自然界中灰狼群体的社会层次和捕食行为来寻找全局最优解。此方法用于调整BP神经网络的权值与阈值,从而提升模型的学习效率和泛化能力[^1]。 #### 数据预处理阶段 对于任何机器学习任务而言,高质量的数据准备至关重要。具体到风力发电功率预测场景下,需先对原始采集来的风电数据执行清理工作去除异常点;再做标准化转换使得不同特征间具备相同尺度范围内的数值分布特性[^3]。 #### 构建BP神经网络架构 定义好输入层节点数等于待分析样本属性维度大小、隐含层数目及其每层内含有的感知器数目依据实际需求设定而定、单输出单元对应目标变量取值情况。初始化连接各层之间的边权重矩阵W以及偏置向量b随机赋予较小绝对值区间里的实数值作为起始状态参数配置方案之一。 #### 应用GWO进行参数寻优 引入GWO机制代替传统梯度下降法更新上述提到过的那些待估测未知参量w,b。种群个体位置代表一组候选解决方案,在迭代过程中不断逼近理想解空间直至满足收敛条件为止。核心操作包括计算适应度函数评估当前解的质量好坏程度、依照特定规则移动搜索方向靠近更优质的潜在答案所在区域等步骤[^4]。 ```matlab function [best_pos, best_score] = gwo_bpnn(train_data, train_label) % 初始化种群规模Np、最大迭代次数Tmax及其他必要设置... while t <= Tmax for i=1:Np % 计算第i只狼的位置pos(i,:)对应的BPNN误差E(i)=fitness(pos(i,:)) if E(i)<alpha_score || isempty(alpha_score) alpha_score=E(i); alpha_pos=pos(i,:); end % 更新其他等级成员beta,delta的信息记录逻辑同上省略... % 根据α,β,δ者指引全体社会成员集体迁移至新地点 a=2*(1-t/Tmax); A=rand()*2*a-a; C=2*rand(); D_alpha=abs(C.*alpha_pos-pos(i,:)); X1=alpha_pos-A.*D_alpha; pos(i,:)=(X1+X2+X3)/3;%此处简化表述假设有个领导者参与引导过程实际上可能更多或少于位 end % 将本轮找到的最佳个体赋给最终返回的结果容器里保存起来 [~,idx]=min([alpha_score beta_score delta_score]); switch idx case 1 best_pos=alpha_pos; best_score=alpha_score; ... end t=t+1; end end ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值