X-Git-Url: https://jxself.org/git/?p=pdp10-muddle.git;a=blobdiff_plain;f=%3Cmdl.comp%3E%2Fcarana.mud.337;fp=%3Cmdl.comp%3E%2Fcarana.mud.337;h=096e350d489d7cdbdfcfb4d72d290faf2f87119a;hp=0000000000000000000000000000000000000000;hb=3395a5e4ef72d59cdb6832af7808dc9c2cf2a413;hpb=363cc6ead5cf4df20759797fe46b5dc29b3886e9 diff --git a//carana.mud.337 b//carana.mud.337 new file mode 100644 index 0000000..096e350 --- /dev/null +++ b//carana.mud.337 @@ -0,0 +1,393 @@ + + + + + + +" This file contains analyzers and code generators for arithmetic + SUBRs and predicates. For convenience many of the SUBRs that are +similar are combined into one analyzer/generator. For more info +on analyzers see SYMANA and on generators see CODGEN. +" + + + +" Analyze +,-,* and /. Take care of no arg and one arg problems." + +) (DEFLT ) (STATE 1) + (K ) (FIXDIV <>) RT) + #DECL ((NOD) (K) (STYP) FIX + (STATE) (DEFLT) ) + > FIX) (ELSE ')>> + + + > + + + .RTYP>) + (> + > ,SEGMENT-CODE> + > ,SEG-CODE> + ,/> + + .DEFLT ()> + !.K)>> + <>) + (ELSE T)>> + ,-> + ;"Treat like a call + to ABS.") + (ELSE )> + .RT >) + (ELSE + > .K> + + > + ,NODE-NAME 1.0> ,RESULT-TYPE FLOAT>)> + <==? .NN MIN>> ,MIN-MAX-CODE) + (ELSE ,ARITH-CODE)>> + + ,SEGMENT-CODE> + )>> + .K>) + (ELSE + + )) + #DECL ((N) NODE (CD) FIX) + + <==? .CD ,SEG-CODE>> + + + ) + (ELSE 1)>> + .K> + 2>>)> + ] <- .STATE 1>> .RTYP>)>> + +>>> + +)) + #DECL ((N NOD) NODE (STATE TT) FIX) + ,SEGMENT-CODE> + <==? ,SEG-CODE>> + + > +
+ >> + >>> + > ANY>>) + (ELSE + >> + ,QUOTE-CODE> + <==? .STATE 3>> + >> + >)> + FIX> 1) + (<==? .TEM FLOAT> 2) + (> + + >) + (ELSE FIX)>> + 1) + (> + + >) + (ELSE FLOAT)>> + 2) + (ELSE 3)>> + > + + ("Arithmetic can't open compile because: " .N + " is of type: " .TEM)>)> + .TT>>> + +) TEM) + #DECL ((N) NODE (K) ) + ) + (ELSE + 1 ABS> + + ' ABS>> + > .RT> + .TEM>)>> + + + +)) + #DECL ((N) NODE (K) ) + ) + (ELSE + 2 MOD> + FIX MOD> + FIX MOD> + )> + > ,QUOTE-CODE> + > 1>)>) + (ELSE FIX)> .R>> + + + +) (NAM )) + ) + (ELSE + 2 .NAM> + ' .NAM> + FIX .NAM> + )> + > + +> + +> + + + + + +> + + + +> + + + +) TY NUM) + #DECL ((N NUM) NODE (OT IT) ATOM (K) (COD) FIX) + ) + (ELSE + 1 .OT> + > ' .OT>> + ,QUOTE-CODE> + + >>) + (ELSE + )>)> + > + +> .NOD>) (WHO ()) + (GLN .NOD) (GLE ()) (NN ) + (N + + <==? .NN 1?> + <==? ,0-TST-CODE>> + 1) + (ELSE 2)>) (K ) TEM (STATE 1)) + #DECL ((WHO) (WHON GLN) + (NOD NOD2) (TEM) NODE (K) + (STATE) (COD N) FIX (GLE) ) + ) + (ELSE + .N > + >> .K> + + > ,QUOTE-CODE> + <0? >> + > + >>> + > ,QUOTE-CODE> + <0? >> + >>>> + + ) + (<==? ,0-TST-CODE>) + ( 0?> <==? N0?>> + ) + ( + ,TEST-CODE) + (<==? 0?> ,0-TST-CODE) + (ELSE ,1?-CODE)>>) + (<==? ,1?> ) + ( ,==?> + <==? ,N==?>> + ) + (ELSE )> + )> + )> + .RTYP>> + +>) DATA CONST K) + #DECL ((NN DATA N) NODE (CONST) ) + ,0-TST-CODE> + <==? ,CHTYPE-CODE> + >> + ,GETBITS-CODE> + > + <==? > ,QUOTE-CODE> + > + > -1>>> + ,BITL-CODE> + <==? ,ANDB> + <==? >> 2> + > ,QUOTE-CODE> + >> + >> + > ,QUOTE-CODE> + >> + >> + >>>> + + + (.DATA)) (ELSE .K)>> + ) + (ELSE + ,PARENT .N> + ,PARENT .N>)>)>> + +)) + #DECL ((N) NODE (K) ) + ' BIT-TEST> + >>> + ' BIT-TEST>)> + .R>> + +)) + #DECL ((WHO GLE) LIST (NOD NOD2) NODE (K) ) + 0?> <==? ,0-TST-CODE>> + > + 0) + (<==? 1?> > 1) + (<==? > ,QUOTE-CODE> + > + >) + (<==? > ,QUOTE-CODE> + > + >> + <1 .K>)> + >)>> + >> + >> + + )) + #DECL ((L) (SYM) SYMTAB) + >> + >>> + .WHO>)> + > + > + G=?> + <==? L?>>> + + G?> > + <==? L=?>>>> + >)> + '![1? L? L=? ==?!]>>> + 0?> )> + STRUCTURED) + (ELSE ) FORM>>)> + + ) (FLG <1 .L>)) + #DECL ((L) (SYM) SYMTAB) + + >>) + (ELSE + + >>)> + T> + .GLE>)>> + + + + ,PLUSINF) + ('.VAL ,PLUSINF) + (,MINUSINF '<- .VAL 1>) + (,MINUSINF '.VAL) + ('.VAL '.VAL) + (,MINUSINF '<- .VAL 1> '<+ .VAL 1> ,PLUSINF)]> + +) + ('.VAL ,PLUSINF) + ('<+ .VAL 1> ,PLUSINF) + (,MINUSINF '<- .VAL 1> '<+ .VAL 1> ,PLUSINF) + ('.VAL '.VAL)]> + + (NOD) NODE) + ,APSUBTAB>>>>>> + +) + ,APSUBTAB>>>>>> + +>>> + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file