1 |
$Id: README_DYNTRANS,v 1.7 2005/12/09 05:34:20 debug Exp $ |
$Id: README_DYNTRANS,v 1.14 2007/04/10 17:26:20 debug Exp $ |
|
|
|
|
------------------------------------------------------------------- |
|
|
|
|
|
PPC optimizations TODO: |
|
|
|
|
|
find high-level bottlenecks! |
|
|
|
|
|
inline cr0 field calculation |
|
|
|
|
|
load/store with r1 as base? |
|
|
|
|
|
multiple load/stores in a row (especially with base = r1) |
|
|
|
|
|
almost all branches are of the "general" form now, they don't |
|
|
need to be. |
|
|
|
|
|
combinations of compare + branch, similar to arm? |
|
|
|
|
|
------------------------------------------------------------------- |
|
2 |
|
|
3 |
|
This README is old. Hm. |
4 |
|
|
5 |
|
--------------------- |
6 |
|
|
7 |
Dyntrans TODO: |
Dyntrans TODO: |
8 |
|
|
13 |
------ ------- ----- ----- |
------ ------- ----- ----- |
14 |
Alpha 32-bit 64 no |
Alpha 32-bit 64 no |
15 |
ARM 32-bit, 16-bit (Thumb) 32 no |
ARM 32-bit, 16-bit (Thumb) 32 no |
16 |
Atmel AVR 16-bit 8 no |
AVR 16-bit + variable 8 no |
17 |
|
AVR32 16-bit + variable 32 ? |
18 |
F-CPU ? ? ? |
F-CPU ? ? ? |
19 |
|
H8 16-bit 8/16 no |
20 |
HPPA 32-bit 64/32 yes |
HPPA 32-bit 64/32 yes |
21 |
i960 32-bit + variable 32 ? |
i960 32-bit + variable 32 ? |
22 |
IA64 128-bit 64 no |
IA64 128-bit 64 no |
23 |
M68K 16-bit + variable 32 no |
M68K 16-bit + variable 32 no |
24 |
M88K ? 32 (?) ? |
M88K 32-bit (+var?) 32 ? |
25 |
MIPS 32-bit, 16-bit (MIPS16) 64/32 yes |
MIPS 32-bit, 16-bit (MIPS16) 64/32 yes |
26 |
OpenRISC ? ? ? |
OpenRISC ? ? ? |
27 |
PC532 ? 32 (?) ? |
PC532 ? 32 (?) ? |
28 |
POWER/PPC 32-bit 64/32 no |
POWER/PPC 32-bit 64/32 no |
29 |
|
RCA180x 8-bit 8-16 (?) no |
30 |
SH 32-bit, 16-bit (SHcompact) 64/32 yes(*) |
SH 32-bit, 16-bit (SHcompact) 64/32 yes(*) |
31 |
SPARC 32-bit 64/32 yes |
SPARC 32-bit 64/32 yes |
32 |
|
Transputer 8-bit 32/16 no |
33 |
x86 8-bit + variable 64/32/16 no |
x86 8-bit + variable 64/32/16 no |
34 |
VAX 8-bit + variable 32 no |
VAX 8-bit + variable 32 no |
35 |
|
|
36 |
(*) Delay slot in SHcompact? |
(*) Delay slot in SHcompact? |
37 |
|
|
|
|
|
|
x) call/return address cache? |
|
|
|
|
|
x) instr_call sequence analysis support? (For handtuning combinations.) |
|
|
|
|
|
x) opcode statistics support? |
|
|
TODO: is instr_call statistics enough? |
|
|
|
|
|
x) load/stores: |
|
|
o) perhaps refactor/reuse common load/store code? |
|
|
o) support for archs that allow transparent |
|
|
unaligned load/stores (ppc, x86 etc) |
|
|
o) alignment checks ==> exceptions |
|
|
o) native byte order ==> faster loads, etc. |
|
|
|
|
|
x) actual cache emulation |
|
|
|
|
|
x) SMP: detect when an instruction such as ll/sc or cas is used, |
|
|
and "synchronize" approximately the number of executed instructions |
|
|
(or cycles) across all CPUs. |
|
|
|
|
|
x) support for variable-length instructions (x86, m68k, i960, ...) |
|
|
Solution: don't increase the next_ic between every |
|
|
instruction, but let each instruction's handler do |
|
|
that for itself. |
|
|
Problem: what about instructions crossing a (virtual) |
|
|
page boundary? They cannot be translated once |
|
|
and for all :( and must be interpreted slowly! |
|
|
|
|
|
x) support for THUMB, MIPS16, userland SH (arm, mips, sh) |
|
|
|
|
|
x) support for Delay slots! (mips, sparc, hppa, SHcompact?) |
|
|
|
|
|
x) various register-window archs (SPARC etc) |
|
|
|
|
|
x) Atmel AVR etc? |
|
|
|
|
|
x) Alpha: hahaha, zapnot and inserts/extracts don't |
|
|
compile into very nice code :-| fix this |
|
|
Solution: if short assembly language snippets can be |
|
|
compiled on the current host, then compile such snippets |
|
|
for alpha_instr_zapnot etc. |
|
|
|
|
|
x) 64-bit virtual memory translation tables (PPC, Alpha, MIPS, |
|
|
HPPA, sh, amd64, etc) |
|
|
|
|
|
x) x86: convert to dyntrans. LOTS of stuff to consider. |
|
|
|
|
|
x) 88k? vax? pc532? 6502? 6800? etc |
|
|
|
|