如何建立自己的Z-stack程序

如何建立自己的Z-stack程序,第1张

建立自己的Z-stack程序方法:

把TI的ZStack-CC2530-2.5.1a文件夹下所有东西拷贝到自己的文件夹下,然后把里面除了Components、Project、Tools文件夹留下其他全部删除。

然后进入project文件夹中zstack文件夹,把除了Library、Samples、Tools、ZMian之外的所有文件夹删除。

重新命名Samples文件夹为MyCoordinator。

进入MyCoordinator文件夹,只留下SampleApp文件夹,并改名为Coordinator。

#ifndef Stack_

#define Stack_

template<class T>

class Stack {

// LIFO objects

public:

Stack(int MaxStackSize = 10)

~Stack() {delete [] stack}

bool IsEmpty() const {return top == -1}

bool IsFull() const {return top == MaxTop}

T Top() const

Stack<T>&Add(const T&x)

Stack<T>&Delete(T&x)

private:

int top // current top of stack

int MaxTop// max value for top

T *stack // element array

}

template<class T>

Stack<T>::Stack(int MaxStackSize)

{// Stack constructor.

MaxTop = MaxStackSize - 1

stack = new T[MaxStackSize]

top = -1

}

template<class T>

T Stack<T>::Top() const

{// Return top element.

if (IsEmpty()) throw OutOfBounds()// Top fails

return stack[top]

}

template<class T>

Stack<T>&Stack<T>::Add(const T&x)

{// Add x to stack.

if (IsFull()) throw NoMem()// add fails

stack[++top] = x

return *this

}

template<class T>

Stack<T>&Stack<T>::Delete(T&x)

{// Delete top element and put in x.

if (IsEmpty()) throw OutOfBounds()// delete fails

x = stack[top--]

return *this

}

分类: 电脑/网络 >>程序设计 >>其他编程语言

问题描述:

初学微机,每次编写程序时总要加入堆栈段,但是我不知道它在程序运行起什么作用。望指教!

解析:

因为CPU要使用堆栈,主要是子程序调用call和ret指令,使用堆栈来存储返回地址,调用子程序的时候,后调用的子程序先返回,而且还可能嵌套调用甚至递归调用,所以必须使用先进后出的数据结构stack来实现返回地址的存储。

没有堆栈stack,就无法实现函数/子程序调用,

还有高级语言都用stack来存储局部变量和参数,汇编也可以用,但是比较麻烦。汇编经常使用stack来保存寄存器的值,PUSH和POP指令比较好用


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

原文地址:https://54852.com/yw/11344803.html

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

发表评论

登录后才能评论

评论列表(0条)

    保存