1. A method for converting software source code for a program into hardware constructs, the method comprising: identifying a set of potentially recursive functions defined in the software source code, wherein each function in the identified set is configured to receive arguments; generating a new function based on the functions in the identified set, wherein the new function substitutes global variables for the arguments of each function in the identified set; generating a plurality of stacks, wherein each of the plurality of stacks is associated with a respective one of the functions in the identified set, and wherein each of the plurality of stacks stores the global variables corresponding to the function arguments, local variables, a return value, and a return address; and generating a plurality of stack pointers, wherein each of the plurality of stack pointers is associated with a respective one of the plurality of stacks, and wherein each of the plurality of stack pointers points to the one of the plurality of stacks with which it is associated.