广义上讲,虚拟化是指将物理资源重新映射至堆栈寄存器的逻辑资源。
Status Offline Virtualisation more broadly refers to any remapping of physical resources to logical ones anywhere on the stack.
一般来说,传递的参数你没有垃圾值从堆栈寄存器或阅读,不写之前调用。
Generally, the parameters you have not passed are garbage values read from the registers or the stack, which were not written to prior to the call.
在对任何域进行修改之前,都应该将条件寄存器保存到堆栈的这个区域中,然后在返回之前恢复。
The condition register should be saved in its area of the stack before any of these fields are modified, and then restored before returning.
这个空间也用来在溢出情况中使用:如果参数个数多于可用寄存器的数目,那么它们就需要进入堆栈空间中。
This space is also used for overflow: if there are more parameters than registers available for use, then they need to go in the stack space.
如果没有提供地址,那么它采用当前寄存器来回溯堆栈。
If no address is provided, it takes the current registers to traceback the stack.
因此,为了使用其他寄存器,就必须将其保存到堆栈中。
Therefore, in order to use the other registers, they have to be saved on the stack.
其后面是4040处理器(1974发布),其具有扩展指令集、程序内存、寄存器集和堆栈。
Its successor was the 4040 processor (released in 1974), which had an expanded instruction set, program memory, register set, and stack.
例如,每当遇到断点时,您可能希望能同时检查某个特殊变量、检查某些寄存器的内容并转储堆栈。
For example, whenever you hit a breakpoint, you might wish to simultaneously check a particular variable, check the contents of some registers, and dump the stack.
这包括关于运行进程的平台的信息:物理内存、CPU数量和类型、库、命令行、线程堆栈和寄存器。
This includes information about the platform on which the process is running: physical memory, CPU number and type, libraries, command line, thread stacks, and registers.
KDB是一个功能非常强大的工具,它允许进行几个操作,比如内存和寄存器修改、应用断点和堆栈跟踪。
KDB is a very powerful tool that allows several operations such as memory and register modification, applying breakpoints, and stack tracing.
因此,在函数中使用非易失性寄存器之前,它的值必须保存到该函数的堆栈帧中,然后在函数返回之前恢复。
Therefore, before using a non-volatile register in a function, its value must be saved in the function's stack frame, and then restored before the function returns.
因此,使用简化ABI 的函数实际上可以通过从堆栈指针开始的负偏移量来保存、使用和恢复非易失性寄存器。
Therefore, functions using the simplified ABI actually can save, use, and restore non-volatile registers by using negative offsets from the stack pointer.
堆栈帧的第一个部分是非易失性寄存器保存区。
The first part of the stack frame is the non-volatile register save area.
所以该指令会将链接寄存器(存有返回地址)存储到调用函数堆栈框架的恰当位置。
So this instruction stores the link register (which holds the return address) into the proper location in the calling function's stack frame.
由于未调用任何函数,也未使用任何本地存储,所以您根本无需堆栈框架,并可通过链接寄存器退出。
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.
如果内核编译期间设置了CONFIG_FRAME _ POINTER选项,那么就用帧指针寄存器来维护堆栈,从而就可以正确地执行堆栈回溯。
If the CONFIG_FRAME_POINTER option was set during kernel compilation, the frame pointer register is used to maintain stacks and, hence, the stack traceback can be performed correctly.
正如我先前提到的,LR_OFFSET是堆栈末端到链接寄存器保存区的偏移量。
As I mentioned earlier, LR_OFFSET is the offset from the end of the stack to the link register save area.
但由于基线条件并不调用任何其他函数,所以无需从堆栈框架加载链接寄存器——值还在原处。
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.
在内核中,这些进程称为线程,代表了单独的处理器虚拟化(线程代码、数据、堆栈和CPU寄存器)。
In the kernel, these are called threads and represent an individual virtualization of the processor (thread code, data, stack, and CPU registers).
例如,可以定义一个(简单的)新命令hari,它显示从地址0xc000000开始的一行内存、显示寄存器的内容并转储堆栈。
For example, a (trivial) new command called hari could be defined that would display one line of memory starting at address 0xc000000, display the contents of the registers, and dump the stack.
例如,在i386机器上,%ebp寄存器可以用来回溯整个堆栈。
For example, on an i386 machine, the % ebp register can be used to traceback the entire stack.
所有的PowerPC程序都需要由一个指向寄存器1中的这个堆栈的指针启动。
All PowerPC programs start off with a pointer to this stack in register 1.
如果从堆栈或寄存器引用对象,则将dose d位设置为启用。
The dosed bit is set on if the object is referenced from the stack or registers.
在基于寄存器的系统上还有一个问题:系统采用寄存器而不是堆栈来向函数传递参数。
There is another problem on register-based systems where registers are used to pass parameters to functions rather than the stack. Consider the following example.
需要用返回值加载寄存器3并执行函数尾声(epilogue)来恢复堆栈框架并返回。
You load register 3 with the return value and perform the function epilogue to restore the stack frame and return.
当函数开始时,它实际上会将链接寄存器保存到调用函数的堆栈帧中,而不是自己的堆栈帧中,然后只有在需要时才会保存它。
When a function begins, it actually saves the link register in the calling function's stack frame, not its own, and then only if it needs to save it.
现在您可以看到为什么简化abi之前的规则要求只使用寄存器3到寄存器12:其他寄存器都是非易失性的,需要堆栈空间来保存这些寄存器的值。
Now you can see why our earlier rules for the simplified ABI required that only registers 3 through 12 should be used: the others are non-volatile and require stack space to save them!
请记住链接寄存器存储在调用函数的堆栈框架内,而非函数自身的堆栈框架。
Remember that the link register is stored in the calling function's stack frame, not the function's own stack frame.
这将产生更好的堆栈回溯,因为帧指针寄存器被用作帧指针而不是通用寄存器。
This will lead to better stack tracebacks, as the frame pointer register is used as a frame pointer rather than a general purpose register.
这将产生更好的堆栈回溯,因为帧指针寄存器被用作帧指针而不是通用寄存器。
This will lead to better stack tracebacks, as the frame pointer register is used as a frame pointer rather than a general purpose register.
应用推荐