包含线程和方法调用堆栈框架。
之后,为堆栈框架定义几个常量。
After this, you define several constants for your stack frames.
之后再恢复堆栈框架并返回。
它首先设置一个堆栈框架。
序言为函数设置堆栈框架。
回链指针指向前一个堆栈框架的回链指针。
The back chain pointer points to the back chain pointer of the previous stack frame.
剩下要做的只是恢复先前的堆栈框架并返回。
All that is left to do is to restore the previous stack frame and return.
堆栈指针给出的是当前堆栈框架的结束位置。
The stack pointer tells you where the end of your current stack frame is.
它不会调用另一个函数,所以不需要堆栈框架。
It never calls another function, so it doesn't need a stack frame.
它可以显示每个调试目标中挂起线程的堆栈框架。
It displays the stack frame for the suspended threads for each target you're debugging.
就目前而言,只需知道它将设置堆栈框架就可以了。
LR_OFFSET是返回地址的堆栈框架的偏移量。
LR_OFFSET is the offset into the stack frame of the return address.
显示当前堆栈框架的代码,突出显示即将执行的代码行。
Displays the code for the current stack frame, highlighting the line that is about to be executed.
计算机引用这一点作为返回地址,会在堆栈框架中跟踪它。
The computer refers to this point as the return address and keeps track of it in the stack frame.
上述这些做法目的是使在代码的主体访问堆栈框架变得更为清楚明了。
These will all be used to make access to stack frame offsets much clearer in the main body of code.
在内部,所有方法内部声明的变量,包括参数,都一起存储在堆栈框架中。
Internally, all the variables declared within a method, including the parameters, are stored together in a stack frame.
在讨论factorial函数之前,先要了解堆栈框架的布局。
Before moving into a discussion of the factorial function, look at the layout of a stack frame more closely. Here is how the stack is supposed to be laid out according to the abi.
请记住链接寄存器存储在调用函数的堆栈框架内,而非函数自身的堆栈框架。
Remember that the link register is stored in the calling function's stack frame, not the function's own stack frame.
在函数内部,通过将esp复制到ebp(第62行)创建一个局部堆栈框架。
Once inside a function, a local stack frame is created by copying esp to ebp (line 62).
所以该指令会将链接寄存器(存有返回地址)存储到调用函数堆栈框架的恰当位置。
So this instruction stores the link register (which holds the return address) into the proper location in the calling function's stack frame.
然后表达式中对变量的引用可以静态绑定到本地堆栈框架或一列全局变量的特定槽上。
References to variables within an expression can then be statically bound to a particular slot in either the local stack frame or the list of global variables.
由于您尚未定义自己的堆栈框架,所以偏移量是由调用函数的堆栈框架的末端算起的。
Since you have not yet defined your own stack frame, the offset is from the end of the calling function's stack frame.
需要用返回值加载寄存器3并执行函数尾声(epilogue)来恢复堆栈框架并返回。
You load register 3 with the return value and perform the function epilogue to restore the stack frame and return.
在本程序中,需要两个堆栈框架大小——一个用于main,一个用于factorial。
In this program you will have two stack frame sizes — one for main and one for factorial.
但由于基线条件并不调用任何其他函数,所以无需从堆栈框架加载链接寄存器——值还在原处。
However, since the base case doesn't call any other functions, you don't need to load the link register from the stack frame — the value is still there.
由于未调用任何函数,也未使用任何本地存储,所以您根本无需堆栈框架,并可通过链接寄存器退出。
Since you did not call any functions or use any local storage, you did not need a stack frame at all, so you can now just exit through the link register.
广义上说,Magnus是一个Web服务,而并不是每个Web服务都需要mvc堆栈框架才能完成工作。
Broadly speaking, Magnus is a web service, and not every web service needs an MVC stack framework to get the job done.
在当前堆栈框架的上下文中会计算表达式的值,在Display窗口的Expressions视图中会显示结果。
The expression is evaluated in the context of the current stack frame, and the results are displayed in the Expressions view of display window.
每个堆栈框架都有一个指向前一个堆栈框架的指针(称为回链指针),还有一个当它调用其他函数时用于存放返回地址的空间。
Each stack frame holds a pointer to the previous stack frame (called the back chain pointer), as well as a space for return addresses for when it calls other functions.
每个堆栈框架都有一个指向前一个堆栈框架的指针(称为回链指针),还有一个当它调用其他函数时用于存放返回地址的空间。
Each stack frame holds a pointer to the previous stack frame (called the back chain pointer), as well as a space for return addresses for when it calls other functions.
应用推荐