PreviousUpNext

15.3.292  src/lib/compiler/toplevel/main/backend.api

## backend.api

# Compiled by:
#     src/lib/compiler/core.sublib



#  Generation of machine code from the highcode intermediate form 



###        "When someone says ``I want a programming language
###         in which I need only say what I wish done,''
###         give him a lollipop."
###
###                                 -- Alan Perlis


stipulate
    package acf =  anormcode_form;                                      # anormcode_form                        is from   src/lib/compiler/back/top/anormcode/anormcode-form.pkg
    package cs  =  code_segment;                                        # code_segment                          is from   src/lib/compiler/execution/code-segments/code-segment.pkg
    package pcs =  per_compile_stuff;                                   # per_compile_stuff                     is from   src/lib/compiler/front/typer-stuff/main/per-compile-stuff.pkg
    package ds  =  deep_syntax;                                         # deep_syntax                           is from   src/lib/compiler/front/typer-stuff/deep-syntax/deep-syntax.pkg
    package sma =  supported_architectures;                             # supported_architectures       is from   src/lib/compiler/front/basics/main/supported-architectures.pkg
herein

    api Backend {
        #
        package blh:            Backend_Lowhalf;                        # Backend_Lowhalf                       is from   src/lib/compiler/back/low/main/main/backend-lowhalf.api
        #                                                               # "blh" == "backend_lowhalf".
        target_architecture:    sma::Supported_Architectures;           #  PWRPC32/SPARC32/INTEL32.
        abi_variant:            Null_Or(String);                        # To distinguish between, e::g., various intel-based unices:
        #                                                               # (THE "Darwin") appears to be the sole current use, otherwise always NULL.
        translate_anormcode_to_execode
            :
            ( acf::Function,
              pcs::Per_Compile_Stuff( ds::Declaration ),
              Null_Or(Int)                                              # The int option gets passed to lambda-split phases (if any) 
            )
            ->
            ( cs::Code_And_Data_Segments,
              Null_Or( acf::Function )                                  # Presumably inlining stuff.
            );
    };
end;

## Copyright 1999, Lucent Technologies, Bell Labs 
## Subsequent changes by Jeff Prothero Copyright (c) 2010-2015,
## released per terms of SMLNJ-COPYRIGHT.


Comments and suggestions to: bugs@mythryl.org

PreviousUpNext