电子发烧友网 > 嵌入式技术 > 正文

嵌入式世界里,堆栈的作用和意义

2020年02月06日 15:57 次阅读

栈这种结构在嵌入式里其实是非常常用的,比如函数调用与返回就是典型的栈应用,虽然很多时候栈都是 CPU 系统在自动管理,我们只需要在链接文件里分配栈大小以及栈存放位置,但稍微了解一下栈的原理会更加利于我们去理解嵌入式代码执行机制,以及帮助我们进一步去调试。

1. 何为堆栈?

堆 HEAP 与栈 STACK 是两个不同概念,其本质上都是一种数据结构。
  

栈是一种按数据项排列的数据结构,只能在一端(栈顶 top)对数据项进行插入和删除,其符合后进先出(Last-In / Firs66175.com_【官方首页】-真人百家乐t-Out)原则。栈(os)一般是由编译器自动分配释放,其使用的是一级缓存。
  

66175.com_【官方首页】-真人百家乐堆也是一种分配方式类似于链表的数据结构,其可以在任意位置对数据项进行操作。堆(os)一般由程序员手动分配释放,其使用的是二级缓存。
  

在嵌入式世界里,堆栈一般指的仅是栈。

2. 作用与意义

MCU 中,栈这种结构一般被 cpu 和 os 所使用。
  

在 cpu 裸机中使用情况分两种:一、主动进行函数调用时,STACK 用以暂存下一条指令地址、函数参数、函数中定义的局部变量;二、硬中断来临时,暂存当前执行的现场数据(下一条指令地址、各种缓存数据),中断结束后,用以恢复。
  

66175.com_【官方首页】-真人百家乐在 os 中使用时,硬栈的使用同 cpu 裸机;但 os 一般会为每个任务额外分配一个软栈,在任务调度时,可用软中断打断当前正在执行的任务,栈则用以保存各自任务以恢复。

3. 软硬之分

硬件堆栈:是通过寄存器 SP 作为索引指针的地址,是调用了 BL 等函数调用指令后硬件自动填充的堆栈。
  

66175.com_【官方首页】-真人百家乐软件堆栈:是编译器为了处理一些参数传递而做的堆栈,会由编译器自动产生和处理,可以通过相应的编译选项对其进行编辑。
  

简单一点说,硬件堆栈主要做为地址堆栈用,而软件堆栈主要会被分配成数据堆栈。或看其栈顶指针是否和 CPU 具有特殊的关联,有关联者(如 SP)“硬”,而无关联者“软”。

4. 栈的纯 C 实现

66175.com_【官方首页】-真人百家乐基本的抽象数据类型(ADT)是编写 C 程序必要的过程,这类 ADT 有链表、堆栈、队列和树等,本节主要讲解下堆栈的几种实现方法以及他们的优缺点。
  

堆栈(stack)的显著特点是后进先出(Last-In First-Out, LIFO),其实现的方法有三种可选方案:静态数组、动态分配的数组、动态分配的链式结构。

静态数组:特点是要求结构的长度固定,而且长度在编译时候就得确定。其优点是结构简单,实现起来方便而不容易出错。而缺点就是不够灵活以及固定长度不容易控制,适用于知道明确长度的场合。


动态数组:特点是长度可以在运行时候才确定以及可以更改原来数组的长度。优点是灵活,缺点是由此会增加程序的复杂性。


66175.com_【官方首页】-真人百家乐链式结构:特点是无长度上线,需要的时候再申请分配内存空间,可最大程度上实现灵活性。缺点是链式结构的链接字段需要消耗一定的内存,在链式结构中访问一个特定元素的效率不如数组。

首先先确定一个堆栈接口的头文件,里面包含了各个方案下的函数原型,放在一起是为了实现程序的模块化以及便于修改。然后再接着分别介绍各个方案的具体实施方法。
  

堆栈接口 stack.h 文件代码:

4.1 静态数组

在静态数组堆栈中,STACK_SIZE 表示堆栈所能存储的元素的最大值,用 top_element 作为数组下标来表示堆栈里面的元素,当 top_element == -1 的时候表示堆栈为空;当 top_element == STACK_SIZE - 1 的时候表示堆栈为满。66175.com_【官方首页】-真人百家乐push 的时候 top_element 加 1,top_element == 0 时表示第一个堆栈元素;pop 的时候 top_element 减 1。
  

a_stack.c 源代码如下:

4.2 动态数组

头文件还是用 stack.h,改动的并不是很多,增加了 stack_size 变量取代 STACK_SIZE 来保存堆栈的长度,数组由一个指针来代替,在全局变量下缺省为 0。
  

create_stack 函数首先检查堆栈是否已经创建,然后才分配所需数量的内存并检查分配是否成功。destroy_stack 函数首先检查堆栈是否存在,已经释放内存之后把长度和指针变量重新设置为零。is_empty 和 is_full 函数中添加了一条断言,防止任何堆栈函数在堆栈被创建之前就被调用。
  

d_stack.c 源代码如下:

4.3 链式结构

由于只有堆栈顶部元素才可以被访问,因此适用单链表可以很好实现链式堆栈,而且无长度限制。把一个元素压入堆栈是通过在链表头部添加一个元素实现。弹出一个元素是通过删除链表头部第一个元素实现。由于没有长度限制,故不需要 create_stack 函数,需要 destroy_stack 进行释放内存以避免内存泄漏。
  

l_stack.c 源代码如下:

下载发烧友APP

打造属于您的人脉电子圈

关注电子发烧友微信

有趣有料的资讯及技术干货

关注发烧友课堂

锁定最新课程活动及技术直播

电子发烧友观察

一线报道 · 深度观察 · 最新资讯
收藏 人收藏
分享:

评论

相关推荐

C语言基础 之 第7章 指针

0 课程大纲介绍和IDE安装1 指针:地址的外号&2 指针与变量3 指针就是一个数4 如何使用一个数据5 一级指针的类型
发烧友学院发表于 2018-12-09 00:00 3105次阅读
C语言基础 之 第7章 指针

嵌入式里堆栈原理是怎么样的如何进行纯C实现

栈这种结构在嵌入式里其实是非常常用的,比如函数调用与返回就是典型的栈应用,虽然很多时候栈都是CPU系....
发表于 2020-02-06 16:23 24次阅读
嵌入式里堆栈原理是怎么样的如何进行纯C实现

微控制器功耗管理模式:降低功耗的方式

便携式医疗设备的设计人员正面临着一些独特的挑战。医疗照护领域对电子产品的审查控管相当严格,尤其在产品设计的寿命...
发表于 2020-02-06 07:00 132次阅读
微控制器功耗管理模式:降低功耗的方式

Python如此受欢迎的原因是什么

Python带有许多数据可视化的包。Matplotlib 是最为常用的库,可以生成基本的图形和图表。
发表于 2020-02-05 18:37 39次阅读
Python如此受欢迎的原因是什么

嵌入式的CPU自定义指令有什么特点

Arm的自定义指令最早将在2020年上半年在ArmCortex®M33CPU中开展,而新的和现有的被....
发表于 2020-02-05 17:32 506次阅读
嵌入式的CPU自定义指令有什么特点

搞嵌入式,为啥要有uboot?

搞嵌入式的,为啥要有uboot?
发表于 2020-02-05 12:00 213次阅读
搞嵌入式,为啥要有uboot?

#define的高级用法简介

#define的高级用法
发表于 2020-02-05 11:50 59次阅读
#define的高级用法简介

C语言到底是不是真的过时了吗

现在说到编程,大家提得更多的似乎永远是前端、后端、小程序、Android App、iOS App,但....
发表于 2020-02-05 11:02 150次阅读
C语言到底是不是真的过时了吗

第三版HBM2存储标准发布,环比提升33%

按照设计规范,单Die最大2GB、单堆栈12 Die(无标准高度限制),也就是24GB容量,匹配10....
发表于 2020-02-04 17:34 262次阅读
第三版HBM2存储标准发布,环比提升33%

基于RapidIO互连构架实现双主机节点通信系统...

随着嵌入式系统对信号处理性能和数据传输性能的不断提高,单纯依靠提高处理器性能来改善系统性能的方法已无....
发表于 2020-02-04 11:55 69次阅读
基于RapidIO互连构架实现双主机节点通信系统...

嵌入式和互联网行业应该如何选择

我的看法是:首先考虑自己个人的兴趣,这两个行业的模式、思维、市场还是有较大不同。
发表于 2020-02-03 14:49 218次阅读
嵌入式和互联网行业应该如何选择

基于嵌入式Internet技术实现网络打印服务器...

随着信息技术的发展和网络时代的到来,基于TCP/IP协议的嵌入式Internet技术越来越受到人们的....
发表于 2020-01-22 10:47 151次阅读
基于嵌入式Internet技术实现网络打印服务器...

基于排爆机器人PBJ-1的嵌入式控制系统的设计与...

但是国外的排爆机器人价格过高,出现故障后维修特别不方便。因此国家863专家组已经将高性能排爆机器人的....
发表于 2020-01-22 10:36 192次阅读
基于排爆机器人PBJ-1的嵌入式控制系统的设计与...

基于ARM9、Linux与CAN总线实现应用于橡...

橡塑机械是现代制造技术中一类重要工具,是一种由数控装置、伺服驱动装置、机床主体和其他辅助装置构成的机....
发表于 2020-01-22 10:20 413次阅读
基于ARM9、Linux与CAN总线实现应用于橡...

嵌入式系统的物联网存在什么价值

嵌入式系统在物联网应用中,已经扮演着越来越重要的角色。
发表于 2020-01-21 17:51 47次阅读
嵌入式系统的物联网存在什么价值

关于嵌入式系统中USB主机方式的应用

USB 就是指通用串行总线(Universal Serial Bus),是计算机外围设备通讯的总线标....
发表于 2020-01-21 10:07 51次阅读
关于嵌入式系统中USB主机方式的应用

德承P2100系列嵌入式系统问市 搭载模块化设计...

德承是专业的嵌入式计算机制造商,推出了P2100系列嵌入式计算机(含P2102 和P2102E)。P....
发表于 2020-01-21 00:42 304次阅读
德承P2100系列嵌入式系统问市 搭载模块化设计...

通过利用UART与若干器件进行连接解决通信问题

在各种外围的设备中,使用了通用的异步接收和发送(UART)接口。例如,一个基于微控制的系统有四个这样....
发表于 2020-01-20 17:17 336次阅读
通过利用UART与若干器件进行连接解决通信问题

如何实现嵌入式应用的人机界面交互性设计

用户界面设计是屏幕产品的重要组成部分,它为人机交互构建了一个沟通环境。其中交互性设 计是用户界面设计....
发表于 2020-01-19 10:46 106次阅读
如何实现嵌入式应用的人机界面交互性设计

设计嵌入式驱动程序有哪些小窍门

每一个嵌入式应用软件都会在某些时候访问最底层的固件和进行一些硬件控制。 驱动的设计和实施是确保一个系....
发表于 2020-01-18 12:07 312次阅读
设计嵌入式驱动程序有哪些小窍门

增加嵌入式存储交换技术可靠性的解决方案

嵌入式存储交换技术还是比较常用的,于是我研究了一下如何增加嵌入式存储交换技术的可靠性,在这里拿出来和....
发表于 2020-01-18 09:06 278次阅读
增加嵌入式存储交换技术可靠性的解决方案

实现低功耗嵌入式设计的多种优化方式

不是所有便携式系统都像图1(参见本系列文章的第二部分)所示的系统这么简单。图3给出了可穿戴电子设备的典型方框图。由...
发表于 2020-01-17 08:00 906次阅读
实现低功耗嵌入式设计的多种优化方式

ARM cortex-A53是否支持硬件预取、整型流水线的个数等相关参数

已经查阅了A53的手册没有找到相关的答案,自己有刚刚接触这方面,老大给的任务,希望有大佬帮忙指点一下,或是有相关...
发表于 2020-01-16 20:32 359次阅读
ARM cortex-A53是否支持硬件预取、整型流水线的个数等相关参数

Orange Pi Zero开发板在Armbian系统下如何使用声卡功能

在使用Orange Pi Zero开发板时,安装Armbian的系统,有开发者反馈找不到声卡,这是因为声卡的功能是在Zero的转接...
发表于 2020-01-16 19:42 3365次阅读
Orange Pi Zero开发板在Armbian系统下如何使用声卡功能

嵌入式串口网关怎样实现多串口转换

TCP/IP 协议由应用层、UDP 层、IP 层和数据链路层组成。为了实现透明传输,增加应用进程协议....
发表于 2020-01-16 17:43 112次阅读
嵌入式串口网关怎样实现多串口转换

采用PC/104嵌入式模块与1553B总线卡实现...

随着我国航空事业的迅速发展,各种新型飞机和发控设备相继研制成功,以往一些测控设备在功能和性能上已无法....
发表于 2020-01-16 10:17 373次阅读
采用PC/104嵌入式模块与1553B总线卡实现...

利用W3150A+芯片和LPC2292微控制器实...

通过以太网进行传输已经成为一种经济、有效的数据传输方式。越来越多的工业测控设备需要配置网络接入功能,....
发表于 2020-01-16 10:14 297次阅读
利用W3150A+芯片和LPC2292微控制器实...

IDRS分布式网络远程监控系统的特点性能及应用设...

视频工作站是监控中心的核心监控设备,即“网络监控录像主机”,负责具体连接前端网络摄像机,提供所有远程....
发表于 2020-01-16 09:53 201次阅读
IDRS分布式网络远程监控系统的特点性能及应用设...

利用嵌入式系统与Internet相连接实现Web...

在硬件系统的设计中,本文采用了ATMEL公司开发的高性能8位AVR(Advanced RISC)单片....
发表于 2020-01-16 09:47 188次阅读
利用嵌入式系统与Internet相连接实现Web...

利用嵌入式网络模块实现计算机实验平台设计

《计算机网络》课程是大学计算机及相关专业开设的一门计算机与通信的专业课程。本课程具有很强的实践性,很....
发表于 2020-01-16 09:46 346次阅读
利用嵌入式网络模块实现计算机实验平台设计

嵌入式DVR的应用技术方案及发展趋势

目前,DVR的技术发展方向有三个,即智能化、集成化、网络化。要预测嵌入式DVR的技术发展趋势,首先要....
发表于 2020-01-16 09:45 276次阅读
嵌入式DVR的应用技术方案及发展趋势

基于VxWorks嵌入式实现多串口驱动的开发与通...

VxWorks操作系统是美国Wind River公司于1983年设计开发的一种嵌入式实时操作系统(R....
发表于 2020-01-16 09:37 346次阅读
基于VxWorks嵌入式实现多串口驱动的开发与通...

嵌入式DVR技术方案的组成及发展分析

二十世纪九十年代末,伴随着电脑技术、图像处理技术和网路技术的发展与普及,兴起了数字化监控浪潮,而PC....
发表于 2020-01-16 09:36 230次阅读
嵌入式DVR技术方案的组成及发展分析

在Linux操作系统上实现无线接入点AP的设计

20世纪90年代以来,随着个人数据通信的发展,为了实现任何人在任何时间,任何地点均能实现数据通信的目....
发表于 2020-01-16 09:34 390次阅读
在Linux操作系统上实现无线接入点AP的设计

基于ARM嵌入式系统与Internet网络技术实...

基于Internet网络的在线监控模式,一方面运行在Web服务器上的CGI程序根据客户端浏览器的请求....
发表于 2020-01-16 09:25 124次阅读
基于ARM嵌入式系统与Internet网络技术实...

多通道数字硬盘录像机结构及系统特点分析

随着现代电子技术的发展,尤其是近年来编解码技术、多媒体通信技术以及嵌入式技术的日趋成熟,一大批有着崭....
发表于 2020-01-16 09:22 244次阅读
多通道数字硬盘录像机结构及系统特点分析

电力系统中嵌入式通信控制系统设计关键要点及前置机...

目前,嵌入式系统(Embedded Systems)已被广泛地应用于工业制造、过程控制、通信、仪器、....
发表于 2020-01-16 09:22 365次阅读
电力系统中嵌入式通信控制系统设计关键要点及前置机...

Lattice MachXO2控制开发板的特性及...

Lattice公司的MachXO2系列是高度可配置的串行逻辑器件(PLD),具有低误差,具有和高系统....
发表于 2020-01-16 09:11 173次阅读
Lattice MachXO2控制开发板的特性及...

香橙派开发板OrangePi 2G-IOT如何升级 NAND 中的 Android

OrangePi 2G-IOT 提供了两种方式的 Android 启动, 分别为 SD 卡启动和 Nand 启动。当需要升级 SD 卡或者 ...
发表于 2020-01-15 20:53 1335次阅读
香橙派开发板OrangePi 2G-IOT如何升级 NAND 中的 Android

关于8位MCU产品十大误解

关于8位MCU产品的十大误解
发表于 2020-01-15 16:26 411次阅读
关于8位MCU产品十大误解

2019年OrangePi 香橙派开发板人气盘点,谁是你心目中的C位?

年关将至,趁着快回家过年,除了吃喝玩乐“葛优躺”的例行活动,我们还可以来一点不一样的活动——开发板测评!下面就...
发表于 2020-01-14 16:47 548次阅读
2019年OrangePi 香橙派开发板人气盘点,谁是你心目中的C位?

关于嵌入式闪存技术的几点误区

大多数汽车]  差异化的多晶硅浮栅嵌入式闪存 多年来,大多数] ...
发表于 2020-01-12 08:00 839次阅读
关于嵌入式闪存技术的几点误区

香橙派Orange Pi Zero开发板如何连接无线网络

方法1:]a. 命令行输入 看是否有网卡(wlan*) $ insmod xradio_wlan.ko c. 输入命令 ifconfig,应该可以看到 wlan0(假设是...
发表于 2020-01-10 19:49 3816次阅读
香橙派Orange Pi Zero开发板如何连接无线网络

Python语言为什么可以得到广泛的应用

Python语言目前是IT行业内最为流行的编程语言之一,同时Python也是全场景编程语言之一,目前....
发表于 2020-01-10 14:55 298次阅读
Python语言为什么可以得到广泛的应用

PC架构和嵌入式录播主机的优劣对比

随着信息化技术的深度渗透,利用先进科技服务课堂教学,打造教学相长、互动高效的“智慧”课堂就成为了当前....
发表于 2020-01-10 14:33 181次阅读
PC架构和嵌入式录播主机的优劣对比

瑞浦尔嵌入式无风扇主机可助力智能工业的发展

近年来,随着我国人口红利的逐渐消失,企业用工成本不断上涨,各种工业机器人获得了广泛的应用,推动了产业....
发表于 2020-01-10 14:29 253次阅读
瑞浦尔嵌入式无风扇主机可助力智能工业的发展

嵌入式导航系统是在怎样的设计下实现的

构成嵌入式导航系统的硬件核心是 S3C2440A 微处理器。它是一款 ARM920T 的内核 RIS....
发表于 2020-01-10 14:05 281次阅读
嵌入式导航系统是在怎样的设计下实现的

关于STM32中断知识

1.1 中断的理解1.1.1 中断概念程序正在执行,突然有外部信号或者内部信号打断正在执行的程序,需要执行该事件,执行完...
发表于 2020-01-10 11:04 5709次阅读
关于STM32中断知识

嵌入式概述

1.1 嵌入式概述1.1.1 嵌入式的含义嵌入式的全称为嵌入式计算机系统。详细的讲嵌入式系统是以嵌入式计算机为技术核心,...
发表于 2020-01-10 10:53 335次阅读
嵌入式概述

采用JP13模块和BENQ-M32模块设计手持无...

随着光纤通信传输网的延伸以及通信维护任务的增加,为加强通信线路的维护,并及时发现维护过程中存在的各种....
发表于 2020-01-09 16:23 983次阅读
采用JP13模块和BENQ-M32模块设计手持无...

如何基于STM32的四轴飞行器进行学习

实践动手学习 | 基于STM32的四轴飞行器
发表于 2020-01-09 14:51 596次阅读
如何基于STM32的四轴飞行器进行学习

苹果的新嵌入式电路织物专利或将成为智能表带

美国专利商标局于近期通过了苹果的一项专利申请,涉及织物的应用,诸如纺织品束带等嵌入式元件。
发表于 2020-01-09 14:19 327次阅读
苹果的新嵌入式电路织物专利或将成为智能表带

嵌入式计算机在体育场馆监控系统中的应用

体育场馆是人们聚集活动的区域,这种区域人口密度大,又因为是运动场所,易有危险产生,为了更好地将危险防....
发表于 2020-01-09 14:13 172次阅读
嵌入式计算机在体育场馆监控系统中的应用

Python和PyQT来开发嵌入式ARM界面如何...

随着Python在互联网人工智能领域的流行,大家也慢慢感受到Python开发的便利,本文就基于嵌入式....
发表于 2020-01-08 14:51 309次阅读
Python和PyQT来开发嵌入式ARM界面如何...

嵌入式处理器与AI芯片存在什么样的差异

智能化工具领域业已成熟,智能机器领域依托 AI 芯片、神经网络、深度学习、云际交互逐渐向强人工智能领....
发表于 2020-01-08 14:35 164次阅读
嵌入式处理器与AI芯片存在什么样的差异

何为嵌入式主板,有哪些常见的嵌入式主板

嵌入式工控机是一套与工控工作台集成在一起的单片机控制系统。配备了合适尺寸的液晶显示屏以显示工作菜单,....
发表于 2020-01-08 14:30 252次阅读
何为嵌入式主板,有哪些常见的嵌入式主板

嵌入式网络化视频监控系统按照怎样的流程来设计

本系统采用B/S(浏览器/服务器)模式的通信构架。用户只需在远程客户机安装一个普通的浏览器软件,其他....
发表于 2020-01-08 09:21 186次阅读
嵌入式网络化视频监控系统按照怎样的流程来设计

嵌入式导航系统如何设计实现

嵌入式导航系统由硬件层、软件层和中间层组成。
发表于 2020-01-08 09:15 200次阅读
嵌入式导航系统如何设计实现

SysConfig对嵌入式系统的开发有什么帮助

嵌入式系统开发人员面临的重大挑战之一是如何高效而精确地配置系统。当今先进的微控制器(MCU)包括各类....
发表于 2020-01-08 09:10 131次阅读
SysConfig对嵌入式系统的开发有什么帮助

嵌入式设计软件哪一些功能比较重要

在测试软件包的易用性之后,请查看对所需其他功能的支持。这可能包括对实时操作系统(RTOS)以及通信硬....
发表于 2020-01-07 14:29 163次阅读
嵌入式设计软件哪一些功能比较重要

嵌入式计算机相对于商用主机的优势是什么

工控机主要是应用于工业现场,往往是嵌入大型的机械设备中,所以也叫作为嵌入式工控机。
发表于 2020-01-07 14:16 128次阅读
嵌入式计算机相对于商用主机的优势是什么

哪一种物联网协议比较合适

与过去大多数传统嵌入式设备的开发方式不同,物联网设备将始终具有某种形式的通信功能。
发表于 2020-01-07 14:05 128次阅读
哪一种物联网协议比较合适

嵌入式计算机的特点和优势分别是什么

嵌入式工控机功耗低,体积小,无风扇,稳定性强,广泛应用于工厂生产线控制,视频监控,视频监控,轨道交通....
发表于 2020-01-07 11:30 151次阅读
嵌入式计算机的特点和优势分别是什么

基于嵌入式的物联网安全如何来保障

随着越来越多的设备连接到物联网(IoT)中,对互联网的依赖性将不断增加。如果设备不安全,这种依赖将导....
发表于 2020-01-03 11:37 153次阅读
基于嵌入式的物联网安全如何来保障

单片机堆栈的基本原理解析

堆栈指针指向最后压入堆栈的有效数据项,称为满堆栈;堆栈指向下一个要放入的空位置,称为空堆栈;有四种类....
发表于 2020-01-02 15:48 242次阅读
单片机堆栈的基本原理解析

高性能的嵌入式ARM MPU在医疗电子系统中的应...

当前,全球医疗电子行业正逐渐展现出诱人的发展前景,产品更新换代的速度不断提高,同时,由于医疗电子产品....
发表于 2019-12-31 14:51 255次阅读
高性能的嵌入式ARM MPU在医疗电子系统中的应...

嵌入式工程师对8位MCU有哪一些误解

32位处理器的处理更加以软件为中心,可以做更多的代码复用。而8位处理器更多地利用硬件外设来完成任务。....
发表于 2019-12-27 16:51 389次阅读
嵌入式工程师对8位MCU有哪一些误解

嵌入式计算机是依据什么来分类的

嵌入式计算机是为特定的软件控制任务而设计的专用计算平台。
发表于 2019-12-27 16:34 352次阅读
嵌入式计算机是依据什么来分类的

嵌入式开发的应用重点是什么

尽管物联网,嵌入式视觉,机器学习和其他新兴技术在开发组织中的重要性日益提高,但C和C ++仍是嵌入式....
发表于 2019-12-27 16:17 1170次阅读
嵌入式开发的应用重点是什么

页面底部区域 foot.htm