It is difficult and expensive to achieve full transparency, and as greater and greater transparency is achieved, there are diminishing returns in the number of applications that can subsequently be run. Yet large, modern applications require a good number of these corner cases to be handled, and all bases must be covered in order to be general-purpose.
For example, nearly all programs obey stack conventions -- but such a common application as Microsoft Office contains instances of pushing data on the stack, rolling back the stack pointer, and then accessing the data that is now beyond the end of the stack! This means that a runtime code manipulation system cannot make any assumptions about application stack usage, or risk failure to run important programs.
We've categorized the lessons that we've learned into three rules of transparency:
|Copyright © 2004 Derek Bruening|