⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 http:^^www.cs.wisc.edu^~larus^eel.html

📁 This data set contains WWW-pages collected from computer science departments of various universities
💻 HTML
字号:
Date: Tue, 05 Nov 1996 20:43:56 GMTServer: NCSA/1.5Content-type: text/htmlLast-modified: Mon, 12 Aug 1996 14:15:36 GMTContent-length: 6259<HTML><HEAD><TITLE> EEL: An Executable Editing Library </TITLE><!-- Changed by: James Larus, 12-Aug-1996 --></HEAD><BODYbackground="eel.gif" body text="#000000" link="#000fff""><!IMG SRC="eel.gif" ALT=""> <BR><H1> EEL: An Executable Editing Library </H1>EEL (Executable Editing Library) is a new C++ library that hides much ofthe complexity and system-specific detail of editing executables.  EELprovides abstractions that allow a tool to analyze and modify executableprograms without being concerned with particular instruction sets,executable file formats, or consequences of deleting existing code andadding foreign code.  EEL greatly simplifies the construction of programmeasurement, protection, translation, and debugging tools.  EEL differsfrom other systems in two major ways: it can edit fully-linkedexecutables, not just object files, and it emphasizes portability acrossa wide range of systems.<H3> Why Edit Executables? </H3>Executable editing is widely used for three purposes: emulation,observation, and optimization.  An edited executable can emulate featuresthat hardware does not provide.  For example, the Wisconsin Wind Tunnelarchitecture simulator drives a distributed, discrete-event simulation ofa parallel computer from the logical cycle times of processors directlyexecuting a parallel program.  The underlying hardware (a SPARC processorin a Thinking Machines CM-5) does not provide a cycle counter or anefficient mechanism for interleaving computation and simulation.  TheWind Tunnel system edits programs so that they update a cycle timer andreturn control at timer expirations.  Similarly, one version of theBlizzard distributed shared-memory system edits programs to insertfine-grain access tests before shared loads and stores. These testspermit data sharing at cache-block granularity, which reduces the falsesharing incurred by page-granularity distributed shared-memorysystems. In the limit, editing can replace an entire program withinstructions for a different architecture. Translation is used both tomigrate legacy code to new architectures and to run binaries on othersystems.<P>Another use of executable editing is program observation. Profiling andtracing tools, such as MIPS's pixie or qpt, edit executables to recordexecution frequencies or trace memory references. These tools are widelyused to study program or system behavior and computer architecture . Morerecently, a tool based on EEL, Active Memory, dramatically lowered thecost of cache simulation-to a 2-7x slowdown-by inserting cache-miss testsbefore a program's memory references rather than post-processing anaddress trace.<P>Finally, executable editing has also been used for global registerallocation and program optimization.  Unlike most compilers, whichoperate on a single file, editing can manipulate an entire program, whichpermits it to perform interprocedural analysis rather than stopping atprocedure boundaries.<H3> How EEL Helps </H3>EEL provides five major abstractions (C++ class hierarchies) that allow atool to examine and modify an executable: executable, routine, CFG,instruction, and snippet.  An executable contains code and data fromeither an object, library, or executable file.  A tool opens anexecutable, examines and modifies its contents, and writes an editedversion.  An executable primarily contains routines, the secondabstraction, but also contains non-executable data.  A tool can examineand modify routines in any order and place them, and new routines, in theedited executable in any order.  EEL represents a routine's body with twofurther abstractions: control-flow graphs (CFGs) and instructions.  A CFGis a directed graph whose nodes are basic blocks (single-entry,single-exit straight-line code sequences) and whose edges representcontrol flow between blocks.  EEL provides extensive control-flow anddata-flow analysis for CFGs.  Blocks contain a sequence of instructions,each of which is a machine-independent description of a machineinstruction.  A tool edits a CFG by deleting instructions or adding codesnippets to blocks and edges.  A snippet encapsulates machine-specificforeign code and provides context-dependent register allocation.  EELmodifies calls, branch, and jumps to ensure that control flows correctlyin the edited program.<H3> Details </H3>EEL currently works for SPARC processors (running SunOS or Solaris).Ports to other systems are in progress.<P>EEL is distributed as part of the Wisconsin Architectural ResearchToolset (<!WA0><!WA0><!WA0><!WA0><!WA0><!WA0><!WA0><!WA0><A HREF="http://www.cs.wisc.edu/~larus/warts.html">WARTS</A>).  WARTS is available withoutcharge for university researchers and is available to otherresearchers for a modest research donation.<H2> <!WA1><!WA1><!WA1><!WA1><!WA1><!WA1><!WA1><!WA1><IMG SRC="http://www.cs.wisc.edu/~larus/new.gif" ALT="">Tools Built with EEL</H2><UL><LI><!WA2><!WA2><!WA2><!WA2><!WA2><!WA2><!WA2><!WA2><A HREF="http://www.cs.wisc.edu/~larus/qpt.html">QPT2: A Quick Profiling and Tracing System</A><LI><!WA3><!WA3><!WA3><!WA3><!WA3><!WA3><!WA3><!WA3><A HREF="http://www.cs.berkeley.edu/~manuel/IRAM">Instrumenting the Solaris kernel.</A><LI><!WA4><!WA4><!WA4><!WA4><!WA4><!WA4><!WA4><!WA4><A HREF="file://ftp.cc.gatech.edu/pub/people/panesar/AISS-pads-96.ps.gz">Darrin West and Kiran Panesar, <EM>Automatic Incremental State Saving,</EM>PADS 10.</A></UL><H2> For More Information</H2>Click <!WA5><!WA5><!WA5><!WA5><!WA5><!WA5><!WA5><!WA5><A HREF="http://www.cs.wisc.edu/~larus/eel_slides.ps">here</A> for slides of a talk on EEL.<P>An overview <!WA6><!WA6><!WA6><!WA6><!WA6><!WA6><!WA6><!WA6><A HREF="ftp://ftp.cs.wisc.edu/wwt/pldi95_eel.ps">paper</A>for EEL (appeared in the ACM SIGPLAN PLDI Conference, June 1995).<P>Another <!WA7><!WA7><!WA7><!WA7><!WA7><!WA7><!WA7><!WA7><A HREF="ftp://ftp.cs.wisc.edu/wwt/wcsss96_eel.ps">paper</A>demonstrating that simple instruction scheduling can hide 20-65% of the costof program instrumentation and that rescheduling legacy code for superscalarprocessors can significantly improve performance.<H2> Related Work</H2><P><!WA8><!WA8><!WA8><!WA8><!WA8><!WA8><!WA8><!WA8><A HREF="http://www.research.digital.com/wrl/projects/om/om.html">OM and ATOM project at DEC WRL (now Digital products).</A><P><!WA9><!WA9><!WA9><!WA9><!WA9><!WA9><!WA9><!WA9><A HREF="http://www.cs.washington.edu/homes/bershad/etch/">Etch tool for editing Win32 x86 executables.</A><P>James Larus<BR>Computer Sciences Department<BR>University of Wisconsin<BR>1210 West Dayton Street<BR>Madison, WI 53706<BR>larus@cs.wisc.edu<BR>608-262-9519<HR>Last modified: Sat Jun  1 08:09:20 1996 by James Larus<ADDRESS>  <!WA10><!WA10><!WA10><!WA10><!WA10><!WA10><!WA10><!WA10><A HREF="http://www.cs.wisc.edu/~larus/larus.html">larus@cs.wisc.edu</A></ADDRESS></BODY></HTML>

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -