%PDF-1.4 5 0 obj << /S /GoTo /D (chapter.1) >> endobj 8 0 obj (Motivation) endobj 9 0 obj << /S /GoTo /D (chapter.2) >> endobj 12 0 obj (Introduction to Emulation, RISC and CISC) endobj 13 0 obj << /S /GoTo /D (section.2.1) >> endobj 16 0 obj (Introduction to Emulation and Recompilation) endobj 17 0 obj << /S /GoTo /D (subsection.2.1.1) >> endobj 20 0 obj (CPU Emulation Accuracy) endobj 21 0 obj << /S /GoTo /D (subsection.2.1.2) >> endobj 24 0 obj (System Emulation vs. User Mode/API Emulation) endobj 25 0 obj << /S /GoTo /D (subsubsection.2.1.2.1) >> endobj 28 0 obj (System Emulation) endobj 29 0 obj << /S /GoTo /D (subsubsection.2.1.2.2) >> endobj 32 0 obj (User Mode \046 API Emulation) endobj 33 0 obj << /S /GoTo /D (subsubsection.2.1.2.3) >> endobj 36 0 obj (Advantages of the Respective Concepts) endobj 37 0 obj << /S /GoTo /D (subsection.2.1.3) >> endobj 40 0 obj (Interpretation and Recompilation) endobj 41 0 obj << /S /GoTo /D (subsubsection.2.1.3.1) >> endobj 44 0 obj (Interpretation) endobj 45 0 obj << /S /GoTo /D (subsubsection.2.1.3.2) >> endobj 48 0 obj (Recompilation) endobj 49 0 obj << /S /GoTo /D (subsection.2.1.4) >> endobj 52 0 obj (Static Recompilation vs. Dynamic Recompilation) endobj 53 0 obj << /S /GoTo /D (subsubsection.2.1.4.1) >> endobj 56 0 obj (Static Recompilation) endobj 57 0 obj << /S /GoTo /D (subsubsection.2.1.4.2) >> endobj 60 0 obj (Dynamic Recompilation) endobj 61 0 obj << /S /GoTo /D (subsection.2.1.5) >> endobj 64 0 obj (Hotspot: Interpretation/Recompilation) endobj 65 0 obj << /S /GoTo /D (subsection.2.1.6) >> endobj 68 0 obj (Liveness Analysis and Register Allocation) endobj 69 0 obj << /S /GoTo /D (subsubsection.2.1.6.1) >> endobj 72 0 obj (Liveness Analysis) endobj 73 0 obj << /S /GoTo /D (subsubsection.2.1.6.2) >> endobj 76 0 obj (Register Allocation) endobj 77 0 obj << /S /GoTo /D (section.2.2) >> endobj 80 0 obj (Endianness) endobj 81 0 obj << /S /GoTo /D (section.2.3) >> endobj 84 0 obj (Intel i386) endobj 85 0 obj << /S /GoTo /D (subsection.2.3.1) >> endobj 88 0 obj (CISC) endobj 89 0 obj << /S /GoTo /D (subsection.2.3.2) >> endobj 92 0 obj (History) endobj 93 0 obj << /S /GoTo /D (subsection.2.3.3) >> endobj 96 0 obj (AT\046T and Intel Syntax) endobj 97 0 obj << /S /GoTo /D (subsection.2.3.4) >> endobj 100 0 obj (Registers) endobj 101 0 obj << /S /GoTo /D (subsection.2.3.5) >> endobj 104 0 obj (Addressing Modes) endobj 105 0 obj << /S /GoTo /D (subsubsection.2.3.5.1) >> endobj 108 0 obj (Characteristics) endobj 109 0 obj << /S /GoTo /D (subsubsection.2.3.5.2) >> endobj 112 0 obj (r/m Addressing) endobj 113 0 obj << /S /GoTo /D (subsection.2.3.6) >> endobj 116 0 obj (Instruction Set) endobj 117 0 obj << /S /GoTo /D (subsection.2.3.7) >> endobj 120 0 obj (Instruction Encoding) endobj 121 0 obj << /S /GoTo /D (subsection.2.3.8) >> endobj 124 0 obj (Endianness) endobj 125 0 obj << /S /GoTo /D (subsection.2.3.9) >> endobj 128 0 obj (Stack Frames and Calling Conventions) endobj 129 0 obj << /S /GoTo /D (section.2.4) >> endobj 132 0 obj (PowerPC) endobj 133 0 obj << /S /GoTo /D (subsection.2.4.1) >> endobj 136 0 obj (RISC) endobj 137 0 obj << /S /GoTo /D (subsection.2.4.2) >> endobj 140 0 obj (History) endobj 141 0 obj << /S /GoTo /D (subsection.2.4.3) >> endobj 144 0 obj (Registers) endobj 145 0 obj << /S /GoTo /D (subsection.2.4.4) >> endobj 148 0 obj (Instruction Set and Addressing Modes) endobj 149 0 obj << /S /GoTo /D (subsection.2.4.5) >> endobj 152 0 obj (Instruction Encoding) endobj 153 0 obj << /S /GoTo /D (subsection.2.4.6) >> endobj 156 0 obj (Endianness) endobj 157 0 obj << /S /GoTo /D (subsection.2.4.7) >> endobj 160 0 obj (Stack Frames and Calling Conventions) endobj 161 0 obj << /S /GoTo /D (subsection.2.4.8) >> endobj 164 0 obj (Unique PowerPC Characteristics) endobj 165 0 obj << /S /GoTo /D (chapter.3) >> endobj 168 0 obj (Design) endobj 169 0 obj << /S /GoTo /D (section.3.1) >> endobj 172 0 obj (Differences between PowerPC and i386) endobj 173 0 obj << /S /GoTo /D (subsection.3.1.1) >> endobj 176 0 obj (Modern RISC and CISC CPUs) endobj 177 0 obj << /S /GoTo /D (subsection.3.1.2) >> endobj 180 0 obj (Problems of RISC/CISC Recompilation) endobj 181 0 obj << /S /GoTo /D (section.3.2) >> endobj 184 0 obj (Objectives and Design Fundamentals) endobj 185 0 obj << /S /GoTo /D (subsection.3.2.1) >> endobj 188 0 obj (Possible Objectives) endobj 189 0 obj << /S /GoTo /D (subsection.3.2.2) >> endobj 192 0 obj (How to Reconcile all Aims) endobj 193 0 obj << /S /GoTo /D (section.3.3) >> endobj 196 0 obj (Design Details) endobj 197 0 obj << /S /GoTo /D (subsection.3.3.1) >> endobj 200 0 obj (The Hotspot Principle Revisited) endobj 201 0 obj << /S /GoTo /D (subsection.3.3.2) >> endobj 204 0 obj (Register Mapping) endobj 205 0 obj << /S /GoTo /D (subsubsection.3.3.2.1) >> endobj 208 0 obj (Simple Candidates) endobj 209 0 obj << /S /GoTo /D (subsubsection.3.3.2.2) >> endobj 212 0 obj (Details of Static Mapping) endobj 213 0 obj << /S /GoTo /D (subsection.3.3.3) >> endobj 216 0 obj (Condition Code Mapping) endobj 217 0 obj << /S /GoTo /D (subsubsection.3.3.3.1) >> endobj 220 0 obj (Parity Flag) endobj 221 0 obj << /S /GoTo /D (subsubsection.3.3.3.2) >> endobj 224 0 obj (Conversion to Signed Using a Table) endobj 225 0 obj << /S /GoTo /D (subsubsection.3.3.3.3) >> endobj 228 0 obj (Conversion to PowerPC Format) endobj 229 0 obj << /S /GoTo /D (subsubsection.3.3.3.4) >> endobj 232 0 obj (Intermediate i386 Flags) endobj 233 0 obj << /S /GoTo /D (subsubsection.3.3.3.5) >> endobj 236 0 obj (Memory Access Optimization) endobj 237 0 obj << /S /GoTo /D (subsubsection.3.3.3.6) >> endobj 240 0 obj (The Final Code) endobj 241 0 obj << /S /GoTo /D (subsubsection.3.3.3.7) >> endobj 244 0 obj (Compatibility Issues) endobj 245 0 obj << /S /GoTo /D (subsection.3.3.4) >> endobj 248 0 obj (Endianness) endobj 249 0 obj << /S /GoTo /D (subsubsection.3.3.4.1) >> endobj 252 0 obj (Do Nothing) endobj 253 0 obj << /S /GoTo /D (subsubsection.3.3.4.2) >> endobj 256 0 obj (Byte Swap) endobj 257 0 obj << /S /GoTo /D (subsubsection.3.3.4.3) >> endobj 260 0 obj (Swapped Memory) endobj 261 0 obj << /S /GoTo /D (subsubsection.3.3.4.4) >> endobj 264 0 obj (Conclusion) endobj 265 0 obj << /S /GoTo /D (subsection.3.3.5) >> endobj 268 0 obj (Instruction Recompiler) endobj 269 0 obj << /S /GoTo /D (subsubsection.3.3.5.1) >> endobj 272 0 obj (Dispatcher) endobj 273 0 obj << /S /GoTo /D (subsubsection.3.3.5.2) >> endobj 276 0 obj (Decoder) endobj 277 0 obj << /S /GoTo /D (subsubsection.3.3.5.3) >> endobj 280 0 obj (i386 Converter) endobj 281 0 obj << /S /GoTo /D (subsubsection.3.3.5.4) >> endobj 284 0 obj (Instruction Encoder) endobj 285 0 obj << /S /GoTo /D (subsubsection.3.3.5.5) >> endobj 288 0 obj (Speed Considerations) endobj 289 0 obj << /S /GoTo /D (subsection.3.3.6) >> endobj 292 0 obj (Basic Block Logic) endobj 293 0 obj << /S /GoTo /D (subsubsection.3.3.6.1) >> endobj 296 0 obj (Basic Blocks) endobj 297 0 obj << /S /GoTo /D (subsubsection.3.3.6.2) >> endobj 300 0 obj (Basic Block Cache) endobj 301 0 obj << /S /GoTo /D (subsubsection.3.3.6.3) >> endobj 304 0 obj (Control Flow Instructions) endobj 305 0 obj << /S /GoTo /D (subsubsection.3.3.6.4) >> endobj 308 0 obj (Basic Block Linking) endobj 309 0 obj << /S /GoTo /D (subsubsection.3.3.6.5) >> endobj 312 0 obj (Interpreter Fallback) endobj 313 0 obj << /S /GoTo /D (subsection.3.3.7) >> endobj 316 0 obj (Environment) endobj 317 0 obj << /S /GoTo /D (subsubsection.3.3.7.1) >> endobj 320 0 obj (Loader) endobj 321 0 obj << /S /GoTo /D (subsubsection.3.3.7.2) >> endobj 324 0 obj (Memory Environment) endobj 325 0 obj << /S /GoTo /D (subsubsection.3.3.7.3) >> endobj 328 0 obj (Disassembler) endobj 329 0 obj << /S /GoTo /D (subsubsection.3.3.7.4) >> endobj 332 0 obj (Execution) endobj 333 0 obj << /S /GoTo /D (subsection.3.3.8) >> endobj 336 0 obj (Pass 2 Design) endobj 337 0 obj << /S /GoTo /D (subsubsection.3.3.8.1) >> endobj 340 0 obj (Register Mapping Problem) endobj 341 0 obj << /S /GoTo /D (subsubsection.3.3.8.2) >> endobj 344 0 obj (Condition Code Optimization) endobj 345 0 obj << /S /GoTo /D (subsubsection.3.3.8.3) >> endobj 348 0 obj (Link Register Inefficiency) endobj 349 0 obj << /S /GoTo /D (subsubsection.3.3.8.4) >> endobj 352 0 obj (Intermediate Code) endobj 353 0 obj << /S /GoTo /D (subsubsection.3.3.8.5) >> endobj 356 0 obj (Pass 2 Design Overview) endobj 357 0 obj << /S /GoTo /D (subsection.3.3.9) >> endobj 360 0 obj (Dynamic Register Allocation) endobj 361 0 obj << /S /GoTo /D (subsubsection.3.3.9.1) >> endobj 364 0 obj (Design Overview) endobj 365 0 obj << /S /GoTo /D (subsubsection.3.3.9.2) >> endobj 368 0 obj (Finding Functions) endobj 369 0 obj << /S /GoTo /D (subsubsection.3.3.9.3) >> endobj 372 0 obj (Gathering use/def/pred/succ Information) endobj 373 0 obj << /S /GoTo /D (subsubsection.3.3.9.4) >> endobj 376 0 obj (Register Allocation) endobj 377 0 obj << /S /GoTo /D (subsubsection.3.3.9.5) >> endobj 380 0 obj (Signature Reconstruction) endobj 381 0 obj << /S /GoTo /D (subsubsection.3.3.9.6) >> endobj 384 0 obj (Retranslation) endobj 385 0 obj << /S /GoTo /D (subsubsection.3.3.9.7) >> endobj 388 0 obj (Address Backpatching) endobj 389 0 obj << /S /GoTo /D (subsubsection.3.3.9.8) >> endobj 392 0 obj (Condition Codes) endobj 393 0 obj << /S /GoTo /D (subsection.3.3.10) >> endobj 396 0 obj (Function Call Convertion) endobj 397 0 obj << /S /GoTo /D (subsubsection.3.3.10.1) >> endobj 400 0 obj ("call" and "ret") endobj 401 0 obj << /S /GoTo /D (subsubsection.3.3.10.2) >> endobj 404 0 obj (Stack Frame Size) endobj 405 0 obj << /S /GoTo /D (subsubsection.3.3.10.3) >> endobj 408 0 obj ("lr" Sequence Elimination) endobj 409 0 obj << /S /GoTo /D (chapter.4) >> endobj 412 0 obj (Some Implementation Details) endobj 413 0 obj << /S /GoTo /D (section.4.1) >> endobj 416 0 obj (Objectives and Concepts of the Implementation) endobj 417 0 obj << /S /GoTo /D (section.4.2) >> endobj 420 0 obj (Loader) endobj 421 0 obj << /S /GoTo /D (section.4.3) >> endobj 424 0 obj (Disassembler) endobj 425 0 obj << /S /GoTo /D (section.4.4) >> endobj 428 0 obj (Interpreter) endobj 429 0 obj << /S /GoTo /D (section.4.5) >> endobj 432 0 obj (Basic Block Cache) endobj 433 0 obj << /S /GoTo /D (section.4.6) >> endobj 436 0 obj (Basic Block Linking) endobj 437 0 obj << /S /GoTo /D (section.4.7) >> endobj 440 0 obj (Instruction Recompiler) endobj 441 0 obj << /S /GoTo /D (subsection.4.7.1) >> endobj 444 0 obj (Dispatcher) endobj 445 0 obj << /S /GoTo /D (subsection.4.7.2) >> endobj 448 0 obj (Decoder) endobj 449 0 obj << /S /GoTo /D (subsection.4.7.3) >> endobj 452 0 obj (Register Mapping) endobj 453 0 obj << /S /GoTo /D (subsection.4.7.4) >> endobj 456 0 obj (i386 Converter) endobj 457 0 obj << /S /GoTo /D (subsection.4.7.5) >> endobj 460 0 obj (Instruction Encoder) endobj 461 0 obj << /S /GoTo /D (subsection.4.7.6) >> endobj 464 0 obj (Speed of the Translation in Four Steps) endobj 465 0 obj << /S /GoTo /D (subsection.4.7.7) >> endobj 468 0 obj (Execution) endobj 469 0 obj << /S /GoTo /D (section.4.8) >> endobj 472 0 obj (Dynamic Register Allocation) endobj 473 0 obj << /S /GoTo /D (chapter.5) >> endobj 476 0 obj (Effective Code Quality and Code Speed) endobj 477 0 obj << /S /GoTo /D (section.5.1) >> endobj 480 0 obj (Pass 1) endobj 481 0 obj << /S /GoTo /D (subsection.5.1.1) >> endobj 484 0 obj (Code Quality) endobj 485 0 obj << /S /GoTo /D (subsection.5.1.2) >> endobj 488 0 obj (Speed of the Recompiled Code) endobj 489 0 obj << /S /GoTo /D (section.5.2) >> endobj 492 0 obj (Pass 2) endobj 493 0 obj << /S /GoTo /D (chapter.6) >> endobj 496 0 obj (Future) endobj 497 0 obj << /S /GoTo /D (section.6.1) >> endobj 500 0 obj (What is Missing) endobj 501 0 obj << /S /GoTo /D (section.6.2) >> endobj 504 0 obj (Further Ideas) endobj 505 0 obj << /S /GoTo /D (subsection.6.2.1) >> endobj 508 0 obj (Translation Concepts) endobj 509 0 obj << /S /GoTo /D (subsection.6.2.2) >> endobj 512 0 obj (Evaluation of Simplification Ideas) endobj 513 0 obj << /S /GoTo /D (subsection.6.2.3) >> endobj 516 0 obj (Dispatcher) endobj 517 0 obj << /S /GoTo /D (subsection.6.2.4) >> endobj 520 0 obj (Peephole Optimization) endobj 521 0 obj << /S /GoTo /D (subsection.6.2.5) >> endobj 524 0 obj (Instruction Encoder) endobj 525 0 obj << /S /GoTo /D (subsection.6.2.6) >> endobj 528 0 obj (Calculated Jumps and Function Pointers) endobj 529 0 obj << /S /GoTo /D (subsection.6.2.7) >> endobj 532 0 obj (Pass 1 Stack Frame Conversion) endobj 533 0 obj << /S /GoTo /D (subsection.6.2.8) >> endobj 536 0 obj (Register Allocation) endobj 537 0 obj << /S /GoTo /D (subsubsection.6.2.8.1) >> endobj 540 0 obj (Adaptive Static Allocation) endobj 541 0 obj << /S /GoTo /D (subsubsection.6.2.8.2) >> endobj 544 0 obj (Keeping Lives of a Source Register Apart) endobj 545 0 obj << /S /GoTo /D (subsubsection.6.2.8.3) >> endobj 548 0 obj (Better Signature Reconstruction) endobj 549 0 obj << /S /GoTo /D (subsubsection.6.2.8.4) >> endobj 552 0 obj (Global Register Allocation) endobj 553 0 obj << /S /GoTo /D (subsubsection.6.2.8.5) >> endobj 556 0 obj (Condition Codes) endobj 557 0 obj << /S /GoTo /D (subsubsection.6.2.8.6) >> endobj 560 0 obj (Other Architectures) endobj 561 0 obj << /S /GoTo /D (subsection.6.2.9) >> endobj 564 0 obj (Other Applications) endobj 565 0 obj << /S /GoTo /D (subsubsection.6.2.9.1) >> endobj 568 0 obj (System Emulation) endobj 569 0 obj << /S /GoTo /D (subsubsection.6.2.9.2) >> endobj 572 0 obj (Hardware Implementation) endobj 573 0 obj << /S /GoTo /D (section.6.3) >> endobj 576 0 obj (SoftPear) endobj 577 0 obj << /S /GoTo /D (appendix.A) >> endobj 580 0 obj (Dispatcher Speed Test) endobj 581 0 obj << /S /GoTo /D (appendix.B) >> endobj 584 0 obj (Statistical Data on Register Usage) endobj 585 0 obj << /S /GoTo /D [586 0 R /Fit ] >> endobj 588 0 obj << /Length 960 /Filter /FlateDecode >> stream xWKoFW(87;K,b"RTrv(Qe:H`+|cK)%P L@0`̦iUB4 8cz8e}u/Qς|ģ s)(5K ʈ4C{a`@I9I8'RJ~3JG&VJERU#7h6X~[2BeyN?P(1U&"
Fw$_8h}sfDunk3fnyW0dgUd\-72*bFNhһV,90P+-;ѮBUR#0`L6EVJTįUʘmr<♤2bh0,Uqޔƅgr#D%|e^?|)5:Tao
eQ-꯱8xy/W/ͭo#
uFlyW4n}겍vBa}WտE#1@*^][up{ݸb=&&9DPK^^^ՙ3r۴c-HV7ȭ#|7+h~җp.neQHe7qm.endstream
endobj
586 0 obj <<
/Type /Page
/Contents 588 0 R
/Resources 587 0 R
/MediaBox [0 0 595.276 841.89]
/Parent 598 0 R
>> endobj
589 0 obj <<
/D [586 0 R /XYZ 100.346 757.935 null]
>> endobj
590 0 obj <<
/D [586 0 R /XYZ 100.346 738.135 null]
>> endobj
587 0 obj <<
/Font << /F5 593 0 R /F41 595 0 R /F44 597 0 R >>
/ProcSet [ /PDF /Text ]
>> endobj
601 0 obj <<
/Length 278
/Filter /FlateDecode
>>
stream
xeKK0+LaɻVTTp!thm0
"soù{)cR
=*?+~Y._S\FEqל( f̐[i?ԂY9m%{QBuD)Z43ß}(%Vץq[5vH\DL)w 2@.\ekcjlxKƦi(\Ds|PPUelaVwlaЊpJeX;ՇNyendstream
endobj
600 0 obj <<
/Type /Page
/Contents 601 0 R
/Resources 599 0 R
/MediaBox [0 0 595.276 841.89]
/Parent 598 0 R
>> endobj
602 0 obj <<
/D [600 0 R /XYZ 72 757.935 null]
>> endobj
599 0 obj <<
/Font << /F44 597 0 R >>
/ProcSet [ /PDF /Text ]
>> endobj
605 0 obj <<
/Length 1426
/Filter /FlateDecode
>>
stream
xڭWK6Ԋe@6="V
Qʮ;ʖW,4Gŷ7b!0bwXě4LDu(6]Op}'~wNBI& X