04-26-2010
The stack is used as a temporary storage place for function arguments, return addresses and
local variables.
The memory area for each function call is placed on the top of the stack, and then taken off when the execution of the call is completed.
Every time your function goes back one step in the nest, the previous value of i is popped off the stack thus it appears as if it is being decremented (but actually it's not)... what is really being decremented is the stack pointer.
All nested functions (in C at least) rely on some sort of stack so you should probably spend a bit understanding the concept.
10 More Discussions You Might Find Interesting
1. Shell Programming and Scripting
I'm using the UNIX csh and i wish to use recursion to nav my way up (or down as it is) a given folder.
My little test script is called "r" and takes a folder as argv (or $1)
#!/bin/tcsh -f
set allFiles = `ls -A $argv`
cd $argv
while ($#allFiles)
if (-d... (1 Reply)
Discussion started by: gsjf
1 Replies
2. Shell Programming and Scripting
I am running a korn shell script which has a recursive function.
The script ran for 117 iterations and ended up with the following error
"recursion too deep".
what should be done to avert this?
Thanks in advance
Swamy
p.s. I am on UNIX MPRAS V4 (3 Replies)
Discussion started by: swamy455
3 Replies
3. Shell Programming and Scripting
Hello !
I need some help with my simple bash script.
This script removes all files ( with name given in $1 ) in current dir and subdirectories .
The problem is with first loop in the script ( for file in * ; do ) .
When I run the sript in my home directory this script display sometimes( ... (5 Replies)
Discussion started by: scotty_123
5 Replies
4. Shell Programming and Scripting
Hello every body. I am trying to find the factorial using the following code. But it is giving the syntax error. I tried very much but in vain. Thanks in advance for helping me
factorial()
{
if
then
y=`expr $1 - 1`
x=$(( $1 \* factorial $y ))... (6 Replies)
Discussion started by: murtaza
6 Replies
5. Shell Programming and Scripting
Hi,
If i have given to write a prog for factorial in C using recursion and without
recursion which one is better in what condition and why ?
thanks (2 Replies)
Discussion started by: useless79
2 Replies
6. Shell Programming and Scripting
Hi folks,
I need to write a script which remove files with suffix *.dmp from a specific directory ,older than 30 days and not including recursive subdirectories.
I.e:
The following command remove recursive all *.dmp files older than 30 days:
find $ORACLE_BASE -mtime +30 -type f -name... (5 Replies)
Discussion started by: nir_s
5 Replies
7. Shell Programming and Scripting
Hello, I'm scripting a newbie. I'm using KSH on HP-UX. I'm trying to write a script that will change a whole directory of file names into UPPER CASE.
I have the "convert to upper case" part of it working fine:
ls | while read filename; do
typeset -u uppercase
uppercase=${filename}
... (2 Replies)
Discussion started by: Wotan31
2 Replies
8. Programming
I want to halt a tail recursive function after certain validation. I want to come out of entire recursion without unwinding phase. How can i achieve that . The coding is done in C language. (5 Replies)
Discussion started by: joshighanshyam
5 Replies
9. Shell Programming and Scripting
Can someone please explain me why the following script calls it self recursively:
#!/bin/bash
echo Called
$0
while this not:
#!/bin/bash
echo Called
$($0)
Thanks (6 Replies)
Discussion started by: superpointer
6 Replies
10. Solaris
Hi,
I am trying to disable the recursion on DNS server (Solaris 10). I have added the lines in the named.conf as below:
allow-query-cache { none; };
recursion no;
Then restarted the solaris DNS services
svcadm refresh svc:/network/dns/server:default
Still I am able to... (0 Replies)
Discussion started by: snchaudhari2
0 Replies
LEARN ABOUT NETBSD
stack_align
STACK(9) BSD Kernel Developer's Manual STACK(9)
NAME
STACK -- stack macros
SYNOPSIS
#include <sys/param.h>
type
STACK_ALLOC(sp, size);
type
STACK_MAX(sp, size);
type
STACK_ALIGN(sp, bytes);
type
STACK_GROW(sp, size);
type
STACK_SHRINK(sp, size);
DESCRIPTION
A stack is an area of memory with a fixed origin but with a variable size. A stack pointer points to the most recently referenced location
on the stack. Initially, when the stack has a size of zero, the stack pointer points to the origin of the stack. When data items are added
to the stack, the stack pointer moves away from the origin.
The STACK_ALLOC() macro returns a pointer to allocated stack space of some size. Given the returned pointer sp and size, STACK_MAX() returns
the maximum stack address of the allocated stack space. The STACK_ALIGN() macro can be used to align the stack pointer sp by the specified
amount of bytes.
Two basic operations are common to all stacks: a data item is added (``push'') to the location pointed by sp or a data item is removed
(``pop'') from the stack. The stack pointer must be subsequently adjusted by the size of the data item. The STACK_GROW() and STACK_SHRINK()
macros adjust the stack pointer sp by given size.
A stack may grow either up or down. The described macros take this into account by using the __MACHINE_STACK_GROWS_UP preprocessor define.
SEE ALSO
param(3), queue(3)
BSD
April 8, 2011 BSD