For example, if the request in Figure 9.34(e) were for six words rather than two words, then the request could not be satisfied without requesting additional virtual memory from the kernel, even though there are six free words remaining in the heap. The problem arises because these six words are spread over two free blocks. (查看原文)
As we will see in Chapter 3, the lea instruction can perform computations of the form (a<<k)+b, where k is either 0, 1, 2, or 3, and b is either 0 or some program value. The compiler often uses this instruction to perform multiplications by constant factors. For example, we can compute 3*a as (a<<1) + a.
Considering cases where b is either 0 or equal to a, and all possible values of k, what multiples of a can be computed with a single lea instruction? (查看原文)
如果你的计算机运行的是 Microsoft Windows 系统,你有两种选择:一种是获取一个 Linux 的拷贝(参见 www.ubuntu.com),然后安装 Linux 作为“双重启动”的一个选项,这样你的机器就能运行其中任意一个操作系统了;另一种是通过安装 Cygwin 工具(www.cygwin.com),你就能在 Windows 下得到一个类似 Unix 的外壳(shell)以及一个非常类似于 Linux 所提供的环境。不过,Cygwin 并不能提供所有的 Linux 功能。 (查看原文)
This is an example of register spilling: there are not enough registers to hold all of the needed temporary data, and hence the compiler must keep some local variables in memory. (查看原文)