[Info-vax] VAX Macro to C conversion

John Reagan xyzzy1959 at gmail.com
Wed Jul 24 09:28:15 EDT 2019


On Wednesday, July 24, 2019 at 7:47:15 AM UTC-4, Simon Clubley wrote:
> On 2019-07-22, VAXman-  @SendSpamHere.ORG <VAXman- at SendSpamHere.ORG> wrote:
> >
> > So, all the other languages need the same sort of special RTL support
> > that was afforded to C. ;)
> >
> 
> There's two levels here:
> 
> 1) RTL support for the intrinsic language features.
> 
> C is sufficiently bare-bones that it doesn't need much of a RTL
> (if any) to write working C code. Compare that to the description
> John posted about the Basic internals.
> 

Correct.  For those of you keeping score at home, here's the list of the DECC$ functions that are linked into the system base image (some are the same objects as what's in DECC$SHR, others have been compiled a 2nd time to remove code that won't function in the kernel like 'locale support')

        DECC$ATOI                       = PROCEDURE,-
        DECC$ATOL                       = PROCEDURE,-
        DECC$MEMCHR                     = PROCEDURE,-
        DECC$MEMCMP                     = PROCEDURE,-
        DECC$STRCAT                     = PROCEDURE,-
        DECC$STRCHR                     = PROCEDURE,-
        DECC$STRCMP                     = PROCEDURE,-
        DECC$STRCPY                     = PROCEDURE,-
        DECC$STRCSPN                    = PROCEDURE,-
        DECC$STRLEN                     = PROCEDURE,-
        DECC$STRNCAT                    = PROCEDURE,-
        DECC$STRNCPY                    = PROCEDURE,-
        DECC$STRPBRK                    = PROCEDURE,-
        DECC$STRRCHR                    = PROCEDURE,-
        DECC$STRSPN                     = PROCEDURE,-
        DECC$RAND                       = PROCEDURE,-
        DECC$SRAND                      = PROCEDURE,-
        DECC$STRTOL                     = PROCEDURE,-
        DECC$STRTOK                     = PROCEDURE,-
        DECC$STRNCMP                    = PROCEDURE,-
        DECC$STRSTR                     = PROCEDURE,-
        DECC$STRTOUL                    = PROCEDURE,-
        DECC$MEMCPY                     = PROCEDURE,-
        DECC$MEMMOVE                    = PROCEDURE,-
        DECC$MEMSET                     = PROCEDURE,-
        DECC$ABS                        = PROCEDURE,-
        DECC$LABS                       = PROCEDURE)
        DECC$ISALNUM                    = PROCEDURE, -
        DECC$ISALPHA                    = PROCEDURE, -
        DECC$ISASCII                    = PROCEDURE, -
        DECC$ISCNTRL                    = PROCEDURE, -
        DECC$ISDIGIT                    = PROCEDURE, -
        DECC$ISGRAPH                    = PROCEDURE, -
        DECC$ISLOWER                    = PROCEDURE, -
        DECC$ISPRINT                    = PROCEDURE, -
        DECC$ISPUNCT                    = PROCEDURE, -
        DECC$ISSPACE                    = PROCEDURE, -
        DECC$ISUPPER                    = PROCEDURE, -
        DECC$ISXDIGIT                   = PROCEDURE, -
        DECC$TOLOWER                    = PROCEDURE, -
        DECC$TOUPPER                    = PROCEDURE, -
        DECC$STRNLEN                    = PROCEDURE)

and the matching "W" wide-char flavors (although I'm not sure how much that was necessary other than both forms come in the same .OBJ files)

And a bunch of the OTS$ routines which are from GEM-generated code.

        OTS$CALL_PROC           = PROCEDURE,-
        OTS$BIT_AND             = PROCEDURE,-
        OTS$BIT_CMP_EQL         = PROCEDURE,-
        OTS$BIT_CMP_EQLP        = PROCEDURE,-
        OTS$BIT_CMP_EQLS        = PROCEDURE,-
        OTS$BIT_CMP_LEQ         = PROCEDURE,-
        OTS$BIT_CMP_LEQP        = PROCEDURE,-
        OTS$BIT_CMP_LEQS        = PROCEDURE,-
        OTS$BIT_CMP_LSS         = PROCEDURE,-
        OTS$BIT_CMP_LSSP        = PROCEDURE,-
        OTS$BIT_CMP_LSSS        = PROCEDURE,-
        OTS$BIT_DIFF            = PROCEDURE,-
        OTS$BIT_EQV             = PROCEDURE,-
        OTS$BIT_FILL            = PROCEDURE,-
        OTS$BIT_INDEX           = PROCEDURE,-
        OTS$BIT_INDEX_BIT       = PROCEDURE,-
        OTS$BIT_MOVE            = PROCEDURE,-
        OTS$BIT_MOVEM           = PROCEDURE,-
        OTS$BIT_NOT             = PROCEDURE,-
        OTS$BIT_OR              = PROCEDURE,-
        OTS$BIT_XOR             = PROCEDURE,-
        OTS$BIT_ZERO            = PROCEDURE,-
        OTS$BLISS_DYNAMIC_HANDLER = PROCEDURE,-
        OTS$BLISS_STATIC_HANDLER = PROCEDURE,-
        OTS$DIV_I               = PROCEDURE,-
        OTS$DIV_L               = PROCEDURE,-
        OTS$DIV_UI              = PROCEDURE,-
        OTS$DIV_UL              = PROCEDURE,-
        OTS$EXTV                = PROCEDURE,-
        OTS$EXTV_VOL            = PROCEDURE,-
        OTS$EXTZV               = PROCEDURE,-
        OTS$EXTZV_VOL           = PROCEDURE,-
        OTS$FILL                = PROCEDURE,-
        OTS$HOME_ARGS           = PROCEDURE,-
        OTS$INDEX               = PROCEDURE,-
        OTS$INDEX_CHAR          = PROCEDURE,-
        OTS$INSV                = PROCEDURE,-
        OTS$INSV_VOL            = PROCEDURE,-
        OTS$JUMP_TO_BPV         = PROCEDURE,-
        OTS$MOD_I               = PROCEDURE,-
        OTS$MOD_L               = PROCEDURE,-
        OTS$MOVE                = PROCEDURE,-
        OTS$MOVEM               = PROCEDURE,-
        OTS$REM_I               = PROCEDURE,-
        OTS$REM_L               = PROCEDURE,-
        OTS$REM_UI              = PROCEDURE,-
        OTS$REM_UL              = PROCEDURE,-
        OTS$SEARCH              = PROCEDURE,-
        OTS$SEARCH_CHAR         = PROCEDURE,-
        OTS$SEARCH_MASK         = PROCEDURE,-
        OTS$STRCMP_EQL          = PROCEDURE,-
        OTS$STRCMP_EQLP         = PROCEDURE,-
        OTS$STRCMP_EQLS         = PROCEDURE,-
        OTS$STRCMP_LEQ          = PROCEDURE,-
        OTS$STRCMP_LEQP         = PROCEDURE,-
        OTS$STRCMP_LEQS         = PROCEDURE,-
        OTS$STRCMP_LSS          = PROCEDURE,-
        OTS$STRCMP_LSSP         = PROCEDURE,-
        OTS$STRCMP_LSSS         = PROCEDURE,-
        OTS$TRANSLATE           = PROCEDURE,-
        OTS$VERIFY              = PROCEDURE,-
        OTS$VERIFY_CHAR         = PROCEDURE,-
        OTS$VERIFY_MASK         = PROCEDURE,-
        OTS$ZERO                = PROCEDURE,-
        OTS$BIT_IS_MEMBER       = PROCEDURE,-
        OTS$BIT_IS_SUPERSET     = PROCEDURE,-
        OTS$DIV_I_O             = PROCEDURE,-
        OTS$DIV_L_O             = PROCEDURE,-
        OTS$STR16_ZERO          = PROCEDURE,-
        OTS$STR16_FILL          = PROCEDURE,-
        OTS$STR16_MOVE          = PROCEDURE,-
        OTS$STR16_MOVEM         = PROCEDURE,-
        OTS$STR16_TRANSLATE     = PROCEDURE,-
        OTS$STR16_CMP_EQL       = PROCEDURE,-
        OTS$STR16_CMP_EQLP      = PROCEDURE,-
        OTS$STR16_CMP_EQLS      = PROCEDURE,-
        OTS$STR16_CMP_LEQ       = PROCEDURE,-
        OTS$STR16_CMP_LEQP      = PROCEDURE,-
        OTS$STR16_CMP_LEQS      = PROCEDURE,-
        OTS$STR16_CMP_LSS       = PROCEDURE,-
        OTS$STR16_CMP_LSSP      = PROCEDURE,-
        OTS$STR16_CMP_LSSS      = PROCEDURE,-
        OTS$STR16_INDEX         = PROCEDURE,-
        OTS$STR16_INDEX_CHAR    = PROCEDURE,-
        OTS$STR16_SEARCH        = PROCEDURE,-
        OTS$STR16_SEARCH_CHAR   = PROCEDURE,-
        OTS$STR16_SEARCH_MASK   = PROCEDURE,-
        OTS$STR16_VERIFY        = PROCEDURE,-
        OTS$STR16_VERIFY_CHAR   = PROCEDURE,-
        OTS$STR16_VERIFY_MASK   = PROCEDURE)

For x86, the OTS$ set is greatly reduced since it isn't GEM as the code generator.  The GEM-to-LLVM converter does turn various GEM IR tuples into OTS$ routine calls just like GEM on Alpha/Itanium does (although at different points in the conversion)



More information about the Info-vax mailing list