Changes between Version 10 and Version 11 of compiler/newdesign

Mar 17, 2010, 3:00:52 PM (9 years ago)



  • compiler/newdesign

    v10 v11  
    3131== Unique Prefix for Names ==
    3232Sometimes compiler needs to generate prefixes for names to make sure the name is unique. Prefixes of some names may need to be consistent with each other. (For example when modify variable names in a function to inline the function, we want a unique prefix for all variables). We need a component that generates a unique name for a given name. This unique name might be based on some extra input (like function name in inlining example).
     34== Supporting Different Architectures ==
     35This is a draft. We want to be able to configure the compiler to use different architectures and different implementations for each high level operation. The following steps need to be taken.[[BR]]
     361. We need a description of high level operations.[[BR]]
     372. We need a generic family of registers with generic instruction set. High level operations should be implemented on this generic machine.(BitBlaze Vine IL may be a starting point for this).[[BR]]
     383. For a given machine, each family of registers and operations available on them should be specified. We need a grammar for this spec.[[BR]]
     394. Instructions to communicate between register families and memory should be in spec.[[BR]]
     405. Given 2,3,4 we need a program that generates proper low level implementations for high level operations.[[BR]]
     416. Compiler decides which low level implementation for each high level operation is chosen. This may depend on input provided by the user in a config file. For example there are two implementations for Advance. User may specify preferences among these implementations and the compiler uses the first available implementation.[[BR]]
     43Note that the C output of the compiler is mostly a series of assembly instructions (intrinsics) for which we don't need to worry about register allocation. Also we have a couple of high level constructs for conditionals and loops. So the above scheme works for C as well.