--- trunk/src/cpus/README_DYNTRANS 2007/10/08 16:20:32 29 +++ trunk/src/cpus/README_DYNTRANS 2007/10/08 16:20:40 30 @@ -1,25 +1,4 @@ -$Id: README_DYNTRANS,v 1.9 2006/03/15 20:34:05 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? - -------------------------------------------------------------------- - - +$Id: README_DYNTRANS,v 1.11 2006/07/27 02:18:07 debug Exp $ Dyntrans TODO: @@ -37,21 +16,20 @@ i960 32-bit + variable 32 ? IA64 128-bit 64 no M68K 16-bit + variable 32 no - M88K ? 32 (?) ? + M88K 32-bit (+var?) 32 ? MIPS 32-bit, 16-bit (MIPS16) 64/32 yes OpenRISC ? ? ? PC532 ? 32 (?) ? POWER/PPC 32-bit 64/32 no SH 32-bit, 16-bit (SHcompact) 64/32 yes(*) SPARC 32-bit 64/32 yes + Transputer 8-bit 32/16 no x86 8-bit + variable 64/32/16 no VAX 8-bit + variable 32 no (*) Delay slot in SHcompact? - x) call/return address cache? - x) instr_call sequence analysis support? (For handtuning combinations.) x) opcode statistics support? @@ -69,11 +47,13 @@ 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. + Problem: devices such as dev_mp don't work well with such a synch. + scheme. 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. + Current solution: ic->arg[0] contains the length of the + instruction (in bytes), and next_ic is + automatically updated. Problem: what about instructions crossing a (virtual) page boundary? They cannot be translated once and for all :( and must be interpreted slowly! @@ -90,7 +70,5 @@ compiled on the current host, then compile such snippets for alpha_instr_zapnot etc. - x) x86: convert to dyntrans. LOTS of stuff to consider. - - x) 88k? vax? pc532? 6502? 6800? etc + x) pc532? 6502? 6800? etc