DDC-I Logo

Sitemap  

DDC-I Ada Compiler System  
General TADS Information

Product Family: TADS
Target CPU: Any
Language: Ada
Host: Any

The following is a list of general information along with frequently asked questions covering the TADS product line.

  • PRAGMAS AND ATTRIBUTES
  • REPRESENTATION SPECIFICATIONS
  • UNCHECKED PROGRAMMING
  • DATA REPRESENTATION
  • COMPILER PERFORMANCE
  • OTHER COMPILER QUESTIONS
  • THE ADA PROGRAM LIBRARY
  • TASKING
  • THE LINKER
  • ADASCOPE
  • ADASCOPE RETARGETING
  • DOCUMENTATION
  • RUNTIME SYSTEM PRICING

  • What are the Hardware Requirements for TADS Product Line?

    PRAGMAS AND ATTRIBUTES

    Q: Does TADS support a FAST_INTERRUPT pragma or some equivalent.

    A: A fast interrupt facility is supplied as part of the runtime system.

    REPRESENTATION SPECIFICATIONS

    1. Length clauses to allow user specifications for size and length are supported. In particular, overhead for user-specified sizes is generally limited to that of zeroing out the extra space. However, if the specified size is not byte-aligned, some overhead could be incurred due to the use of bit operations.

    2. Record representation clauses do allow representation at the bit level.

    3. Record components of discrete types ranging in size from one bit to the number of bits in a storage unit, in increments of one bit, are fully supported.

    4. Address clauses are supported.

    5. The ability to interrogate the ADDRESS attribute of any object, (e.g., an individual record component), or subprogram is supported.

    6. The location of code, data, and constant sections can be specified independently. However, dynamic objects are understood not to be specifiable in this manner.

    7. The location of an object, subprogram, task, or package in memory is user selectable at compilation time through the use of representation specifications. It is also selectable at link time.

    8. When storage is reserved for a collection, it will contain user-allocated objects.

    9. When storage is reserved for a task activation, it is for stack space.

    10. An alignment clause must request alignment in powers of 2.

     

    UNCHECKED PROGRAMMING

    1. It is possible to perform unchecked type conversions between source objects whose representations in bit length are smaller than or equal to those of the target objects.

    2. No exceptions are raised from Unchecked_Conversion.

    3. Unchecked deallocation of dynamic memory is supported. The result of calling an instance of Unchecked_Deallocatlon is that exiting a scope which declares an access type results in the deallocation of each collection whose types are going out of scope. This process results in automatic reclamation of storage that is no longer referenced, except that within a declaring scope.

    DATA REPRESENTATION

    1. All data lengths that are supported by the underlying hardware for integers are supported by the compiler.

    2. All data lengths that are supported by the underlying hardware for unsigned integers are supported by the compiler. Support for emulation of 32-bit unsigned arithmetic without overflow checks is provided in a package of compiler intrinsics.

    3. All data lengths (e.g., single and double precision) that are supported by the underlying hardware for floating-point types are supported by the compiler.

    4. Multiply-dimensioned array objects are stored in row-major order

    5. All data representations are documented in the user manual.

    COMPILER PERFORMANCE

    1. All run-time checks can be disabled via a compiler switch or pragma.

    2. Logical operations (AND, OR, XOR, and NOT) on packed-bit arrays are performed in-line.

    3. Unreachable code can be identified and suppressed by the compiler.

    4. Static valued constants can be initialized prior to load time and fixed in ROM data areas. (Our questioner defined static valued constants as objects which are declared as constants and are assigned permanent values which can be determined prior to run-time at reasonable cost. These should include at least Ada static expressions and aggregates whose subtypes and scalar components are all static in the Ada sense.)

    5. An intermixed Ada source and assembly code listing can be generated by the compiler.

    6. The TADS system does support IEEE 695 object code format through a conversion tool that converts TADS Object File Format (TOFF) files to IEEE 695 and many other industry standard formats. The TADS compiler and linker generate TOFF, a format that provides richer symbol table information than IEEE 695. This information allows more Ada-specific information to be preserved, for example, Ada type information.

    7. On the VMS plafform, re-entrant compiler operation is supported; that is, several users can operate the compiler simultaneously from a single copy rather than each user having an individual copy of the compiler resident in memory.

    8. The compiler does not support conditional compilation, which the Ada standard does not permit. Ada does permit a partial alternative -- folding based on static expressions -- which TADS does support.

    OTHER COMPILER QUESTIONS

    1. No overhead exists for generic procedures and functions or for procedures and functions in a generic package over their non-generic counterparts.

    2. Variants of discriminated records do occupy the same amount of storage.

    3. Information on the representation of discriminants and the rules for the storage of discriminated records is included in user documentation.

    4. The heap allocation space can be specified by the user.

    5. Task creation is the only Ada feature that implicitly results in calls to the storage manager.

    6. The user can specify a maximum stack size.

    7. Stack space can be allocated at compile and/or link time.

    8. The stack is dynamically extensible:
    The user gets a dynamic stack by default. This feature may be disabled by applying a length clause to each task. The user must also supply a pool of stacks at linktime. They may be specified to be static or dynamic.

    9. On the subject of overhead for stack overflow detection:
    When no additional stack space beyond that consumed by a call is required, the minimum overhead for stack overflow detection (per call) is zero. A more frequent case is that a write to a stack is performed. The worst case, occurring in rare instances, is that a runtime call to a stack check routine is made.

    The minimum is chosen automatically. In any other case, stack checks can be suppressed by pragma SUPPRESS or by a compilation switch.

    10. Collections (i.e., access types to which size clauses have been applied) are supported.

    11.The compiler uses hardware floating-point arithmetic facilities.

    12. Separate assembly unit modules are supported like separate Ada compilation units to facilitate automatic linking of these modules. The user should use the foreign or interface commands in the librarian.

    13. The compiler can decompose Ada compilation units into separately linkable units by subprogram and static data object. The compiler separates subprograms in a compilation unit into separate sections which are included or excluded at link time depending upon whether they are referenced. It separates individual static data items in a package only if address representation specifications are given.

    THE ADA PROGRAM LIBRARY

    1. The current version of an obsolete unit can be re-acquired through user control. The user can perform a remake (to recompile the system) that makes the unit consistent again. The remake command uses the internal source -- the last source compiled or parsed into the library. The user can also extract source to get the source of the obsolete unit.

    2. The library system supports automatic inclusion of the "with" tree.

     

    TASKING

    1. The heap allocation strategy favors speed.

    2. The following task scheduling algorithms are supported:

    Preemptive priority
    Time-slicing
    Round-robin
    FIFO

    The runtime system uses a priority-driven preemptive scheduler. Time-slicing, round-robin and FIFO schedules can be created using the TADS ARTClient Package.

    3. Interrupts that affect tasking (as defined by PREEMPTER_ MASK) may be locked out for longer than 12 instructions (the maximum for interrupts that do not affect tasking) in order to protect the dispatch code from mutiple entries.

    4. The maximum number of tasks that can be executing at one time is limited only by the amount of memory available.

    5.The conditions under which a task reschedule occurs are: interrupts, preemptions, and synchronization points. The user can, however, force a reschedule by using of the ARTClient package.

    6.The DELAY is configurable to any number greater than 1 tick of Timer B. The default setting is 20 ticks. The delay can be set by the user.

    7. The compilation system and runtime system avoid the cost of supported task termination and aborting when these features are not used.

     

    THE LINKER

    1. Unused subprogram elimination is supported for any procedure by the linker, through weak references and selective linking, under all circumstances. However, a section that might be otherwise eliminated may be designated as "required" (not subject to exclusion because it is not referenced) by a command in the linker control file that forces it to be loaded.

    ADASCOPE

    The debugger supports interfacing Ada with non-Ada routines, but only Ada is supported at the source level. Non-Ada routines may still be debugged at the machine code level.

    AdaScope allows the user to insert small code patches in Ada during the debugging process so that some problems can be corrected without recompiling. These patches can be logged and read in when AdaScope is again started. Only after considerable debugging, or as a final step, will a recompilation be necessary to actually insert the new code in the source files.

    It is possible to restart an embedded program without reloading it from ROM or the development system loader through the AdaScope autoload feature.

     

    ADASCOPE RETARGETING

    AdaScope operates remotely from the host to debug a program that is executing on the target processor. Connection is usually through an RS-232 serial line. Other connections may be supported using the optional AdaScope Link Retargeting Kit. This kit provides the means for changing AdaScope's communications format. See the technical summary for a description of the Link Retargeting Kit.

    A second kit called the AdaScope Protocol Retargeting Kit is available for a complete retarget of the AdaScope back end to a hardware device. This kit would be used to retarget AdaScope to some emulator-type device more complicated than a bare board and not currently supported. See the technical summary for a description of the Protocol Retargeting Kit.

     

    DOCUMENTATION

    1. Object, symbolic debug, and library file formats are documented in the compiler user manual.

    2. Documentation of stack frames and parameter passing conventions are provided in the compiler user manual.

     

    RUNTIME SYSTEM PRICING

    1. Sublicenses are available to allow customers to provide runtime system object code to their own suppliers and subcontractors.

    2. Runtime buyout arrangements can be negotiated.

    Contact
    602-275-7172
    sales@ddci.com

    IDIQ Contract Vehicles:
    --------------
    AMCOM Express
    DESP II
    F2AST
    R23G

    Links

    Support

    Members Area
        -Member Login/Return
        -Login Help

    Atlas Support Packages
        -Atlas Premium
        -Atlas Advantage
        -Atlas Choice

    Complimentary Support

    Submit a Software Trouble Report

    Customer Quote:
    "Thank you for the excellent support during our evaluation phase... I need to make special mention of Michael, the support and comments he made really put me on the track of finding solutions very fast."