X-Git-Url: https://jxself.org/git/?p=pdp10-muddle.git;a=blobdiff_plain;f=mim%2Fdevelopment%2Fmim%2Fvaxc%2Fasmgo.mud;fp=mim%2Fdevelopment%2Fmim%2Fvaxc%2Fasmgo.mud;h=5c1492acb94fa1876630fdb27fe9c201f11b9545;hp=0000000000000000000000000000000000000000;hb=d73ace3f3292e320b461b8fcd2e9f5dc5d9684d7;hpb=d530283ea60fb0ddcc28e9c5bd072456afe06e07 diff --git a/mim/development/mim/vaxc/asmgo.mud b/mim/development/mim/vaxc/asmgo.mud new file mode 100644 index 0000000..5c1492a --- /dev/null +++ b/mim/development/mim/vaxc/asmgo.mud @@ -0,0 +1,754 @@ + +) ROFF CDV) + #DECL ((INSC EAT CODEPTR INST BYTEOFF PTR INITLEN) FIX (LREF) LABEL-REF + (XREF) (CDV) ) + FIX>> + > + + .CODEPTR> + + )>> + > + > + > + > + <+ 1>>>> + .BYTEOFF> + +) ROFF CDV) + #DECL ((INSC EAT CODEPTR INST BYTEOFF PTR INITLEN) FIX (LREF) LABEL-REF + (XREF) (CDV) ) + FIX>> + > + + .CODEPTR> + + )>> + > + > + > + >) + (ELSE + > + + + + > + > + + >) + ( + <==? .INSC ,INST-SOBGTR>> + >) + ( + <==? .INSC ,INST-AOBLEQ>> + >) + (ELSE >)>) + (ELSE + + >)>)> + .BYTEOFF> + + FIX>> + > + > + + .CODEPTR> + + )>> + > + > + > + 1> <>>>> + .BYTEOFF> + + FIX>> + > + > + + .CODEPTR> + + )>> + > + > + > + + + FIX>> + ) + (<==? .EAT ,OP-BW> + > + FIX>> + 255> FIX>> + > + >) + ( <==? .INSCODE ,INST-SOBGTR>> + + ,INST-BGEQ) + (ELSE ,INST-BGTR)>> + + + + > + > + FIX>> + 255> FIX>> + >) + ( <==? .INSCODE ,INST-AOBLSS>> + > + + + + + + FIX>> + 255> FIX>> + > + >) + ( + > + > + + + + FIX>> + 255> FIX>> + > + >) + (ELSE + + > + > + FIX>> + 255> FIX>> + >)> + + + .BYTEOFF> + + FIX>> + +"PASS TO FIXUP THE LABELS IN THE FINAL CODE" + + + > + + > + >> + + 127> + > + + FIX>>) + (ELSE + FIX>> + + 255> + FIX>>)>> + > + > + FIX>> + 255> + FIX>> + 255> + FIX>> + 255> + FIX>>)>> + .LABELS>> + + -1> )> + > 0> )> + >>> + +> + > T) + (<==? -1> <>) + (ELSE + >> + T) + (ELSE <>)>)>> + +)) + + + > + ,GLUE> + > + + + )>)>> + )> + + + > + > )> + + >> + + + > + + > + + )> + (.SBYTEOFF .EBYTEOFF)> + +) (CLABELS T) + (MAXPTR ,CODE-COUNT)) + #DECL ((BYTEOFF VALUE MAXPTR) FIX (CL) LIST (CV) CODEVEC) + >> + ) + CB) + #DECL ((CB PTR INS INSCODE EAT NUM-OPS) FIX + (OP-INF) + (IN-CASE?) ) + + )> + > + FIX>> + >> + >) + (ELSE > >)>)> + > + > 0> + >)> + > + )> + > + <- ,INIT-SHIFT>> FIX>> + + >) + (ELSE + + >>)> + )> + > + > + )) + #DECL ((DO-IMM) ) + > 0> >)> + > 0> + + + ) + (<1? .NUM-OPS> + )>)> + > + )> + > 0> + + > + > + > + >> + >) + (ELSE + > + >)>)>)> + > + 255> FIX>> + >>)>> + )> + FIX>> + FIX>> + > 7> FIX>> + > + <==? .EAT ,OP-BW>> + + .INSCODE + .EAT>> + ) + ( + + > + ) + (<1? .NUM-OPS> )>)>) + (<==? .EAC ,AM-INX> + > + > + > + ) + ( + <==? .EAC ,AM-REGD> + <==? .EAC ,AM-ADEC>> + + >) + ( <==? .EAC ,AM-AINCD>> + + ) + ( <==? .SIZ ,SZ-F>> + ) + (<==? .SIZ ,SZ-W> ) + (ELSE )> + > + )> + >) + (ELSE > )>) + (ELSE + <==? .EAC ,AM-BD>> ) + ( <==? .EAC ,AM-WD>> ) + ( <==? .EAC ,AM-LD>> + )> + >)>>)>)> + > + + )> + > + >)> + )>>> + + FIX>) + (CODE FIX>) PSAVE + PATCH) + #DECL ((BYTEOFF INST) FIX) + + > + >> + + + <+ 1>>>>)>) + (<==? .CODE ,INST-PSTORE> + > + + > + + + <+ 1>>>>)>) + (<==? .CODE ,INST-CALL> >) + (<==? .CODE ,INST-PUSHLAB> >) + (<==? .CODE ,INST-MOVELAB> >)> + .BYTEOFF> + +) + > + >> + .CBOFF>> ,JUMP-EXTENT> + >) + (>)>) + (>)> + .BYTEOFF> + +> + >> + + .CBOFF>>> ,JUMP-EXTENT> + > + + > FIX>> + > 255> FIX>> + 255> FIX>> + 255> FIX>> + 255> FIX>> + >) + (ELSE + + > 255> FIX>> + 255> FIX>> + >)>) + (ELSE + > + > + > + + + >)> + .BYTEOFF> + + FIX>) + (CODE FIX>) PSAVE + PATCH) + #DECL ((BYTEOFF INST) FIX) + + > + >> + + 1> + <>>>>)>) + (<==? .CODE ,INST-PSTORE> + > + + > + + 1> + <>>>>)>) + (<==? .CODE ,INST-CALL> + >) + (<==? .CODE ,INST-PUSHLAB> + + >) + (<==? .CODE ,INST-MOVELAB> + + >)> + .BYTEOFF> + +> + + -24> FIX>> + > + + + + -24> FIX>> + > + +> + + -24> FIX>> + > + + + + 255> FIX>> + > + +)) + + >> + + + + > + + >> + + ) + (ELSE + >> + + )>)>>> + +) + (MAXPTR ,CODE-COUNT) (CLABELS T)) + #DECL ((BYTEOFF VALUE MAXPTR) FIX (CL) LIST (CV) CODEVEC) + >> + ) START-CASE) + #DECL ((LB PTR INSCODE INS NUM-OPS EAT) FIX (OP-INF) UVECTOR + (IN-CASE?) ) + + )> + > + FIX>> + >> + >) + (ELSE > >)>)> + > + > + >>>> + + <- .PTR 1>> + + )>> + > + + + > + FIX>> + 255> FIX>> + > 0> >)> + )> + > + <- ,INIT-SHIFT>> FIX>> + + >) + (ELSE + )> + + .INSCODE>>)> + > + > + > + > 0> )> + > 0> + + > + > + > + >> + >) + (ELSE > >)>)>)> + 255> FIX>> + FIX>> + FIX>> + > 7> FIX>> + > + <==? .EAT ,OP-BW>> + + .INSCODE + .SAVED-CV + .EAT>>) + ( + + > + ) + (<1? .NUM-OPS> )>)>) + (<==? .EAC ,AM-INX> + > + > + + >) + ( <==? .EAC ,AM-REGD> <==? .EAC ,AM-ADEC>> + + >) + ( <==? .EAC ,AM-AINCD>> + + + > + ) + ( <==? .SIZ ,SZ-F>> ) + (<==? .SIZ ,SZ-W> ) + (ELSE )> + > 0> + + ) + (<1? .NUM-OPS> )>)> + )> + > 0> + + > + > + > + >> + >) + (ELSE + > + >)>)>)> + > + 255> FIX>> + >> + + >>) + (ELSE >)>) + (ELSE + + > + <==? .EAC ,AM-BD>> ) + ( <==? .EAC ,AM-WD>> ) + ( <==? .EAC ,AM-LD>> )> + > 0> )> + > 0> + + > + > + > + >> + >) + (ELSE + > + >)>)>)> + 255> FIX>> + + >>)>>)>)> + )> + > + + )> + > + >)> + )>> + >) (.BYTEOFF)>> + +>> + >> + .LOW>> + + <==? .SZ ,LENGTH-LONG>> + + >>> + > + .BYTEOFF> + > + + >) + (ELSE + + > + >)>) + (ELSE + >> + + > + )>)> + > + +>> >) + (.X)>> + +>> >) + (.X)>> + +> 0> )> + + >>> + +> + + + > + ,JUMP-EXTENT> + >> + ,JUMP-EXTENT> + )> + + FIX>> + 1> + 255> FIX>> + > + + > + + + >)>> + ,UNRESOLVED-CALLS-TABLE> + .SBYTEOFF> + + + > + 0> + + ) + (T + ; "Try a little harder to keep calls in the + right order, avoiding fencepost death + in check-unresolved-calls" + 1>> + (.UCALL)>)>)>> + ,CALL-TABLE> + > + +)) + #DECL ((CE) CALL-ENTRY) + ) + )> + > + .NAME> + >> + > + >> + ,JUMP-EXTENT> + > + FIX>> + 1> + 255> FIX>> + + > + >) + (>)>) + ()> + >>>