// Declarations for the code generator. // Last modified on 04/02/74 at 16:01:37 by R F Mabee. // Code generator substantially modified during 6180 bootstrap, and installed with Version 3.4, R F Mabee. // First installed as Version 2.7, R F Mabee. get "bcpl_compiler_head" get "bcpl_symbols" get "bcpl_cg_codes" external $( FinishText = "bcpl_cg0$FinishText" ApplyMonadicOperator = "bcpl_cg1$ApplyMonadicOperator" ApplyDiadicOperator = "bcpl_cg1$ApplyDiadicOperator" ApplyOffsetOperator = "bcpl_cg1$ApplyOffsetOperator" MonadicJumpcond = "bcpl_cg1$MonadicJumpcond" DiadicJumpcond = "bcpl_cg1$DiadicJumpcond" IsNumber = "bcpl_cg2$IsNumber" EvalNumber = "bcpl_cg2$EvalNumber" IsZero = "bcpl_cg2$IsZero" IsAddress = "bcpl_cg2$IsAddress" IsStored = "bcpl_cg2$IsStored" LookupTemp = "bcpl_cg2$LookupTemp" MakeCgTemp = "bcpl_cg2$MakeCgTemp" ClaimRegister = "bcpl_cg2$ClaimRegister" DisclaimRegister = "bcpl_cg2$DisclaimRegister" InRegister = "bcpl_cg2$InRegister" FindInRegister = "bcpl_cg2$FindInRegister" CombineAddress = "bcpl_cg2$CombineAddress" Compjump = "bcpl_cg2$Compjump" Complab = "bcpl_cg2$Complab" DefineLab = "bcpl_cg2$DefineLab" LookupLabel = "bcpl_cg2$LookupLabel" ClearRegisters = "bcpl_cg2$ClearRegisters" ClearMemory = "bcpl_cg2$ClearMemory" AddLiteral = "bcpl_cg2$AddLiteral" OutLiterals = "bcpl_cg2$OutLiterals" Outstring = "bcpl_cg2$Outstring" LoadRegister = "bcpl_cg3$LoadRegister" LoadPointer = "bcpl_cg3$LoadPointer" LoadIndex = "bcpl_cg3$LoadIndex" LoadAppropriateRegister = "bcpl_cg3$LoadAppropriateRegister" LoadNumber = "bcpl_cg3$LoadNumber" SetupAddr = "bcpl_cg3$SetupAddr" CompareToZero = "bcpl_cg3$CompareToZero" Makeaddressable = "bcpl_cg3$Makeaddressable" SwapAandQ = "bcpl_cg3$SwapAandQ" Preserve = "bcpl_cg3$Preserve" Store = "bcpl_cg3$Store" StoreRegister = "bcpl_cg3$StoreRegister" GetRegister = "bcpl_cg3$GetRegister" Satisfactory = "bcpl_cg3$Satisfactory" Literal = "bcpl_cg3$Literal" NewSSP = "bcpl_cg4$NewSSP" Compentry = "bcpl_cg4$Compentry" Compreturn = "bcpl_cg4$Compreturn" CreateArglist = "bcpl_cg4$CreateArglist" StoreArg = "bcpl_cg4$StoreArg" Compfnap = "bcpl_cg4$Compfnap" CreateSystemArglist = "bcpl_cg4$CreateSystemArglist" StoreSystemArg = "bcpl_cg4$StoreSystemArg" CompSystemCall = "bcpl_cg4$CompSystemCall" ResultBlockBegin = "bcpl_cg4$ResultBlockBegin" ResultSet = "bcpl_cg4$ResultSet" ResultGet = "bcpl_cg4$ResultGet" Compfinish = "bcpl_cg4$Compfinish" Compgoto = "bcpl_cg4$Compgoto" Compstring = "bcpl_cg4$Compstring" Comptable = "bcpl_cg4$Comptable" Compexternal = "bcpl_cg4$Compexternal" OutData = "bcpl_cg5$OutData" Outop = "bcpl_cg5$Outop" Outop2 = "bcpl_cg5$Outop2" Outop3 = "bcpl_cg5$Outop3" Outop4 = "bcpl_cg5$Outop4" OutW = "bcpl_cg5$OutW" OutW2 = "bcpl_cg5$OutW2" PutCode = "bcpl_cg5$PutCode" PutAbsBits = "bcpl_cg5$PutAbsBits" SetLineNumber = "bcpl_cg5$SetLineNumber" SectionHeader = "bcpl_cg5$SectionHeader" FormOpcode = "bcpl_cg5$FormOpcode" FormTag = "bcpl_cg5$FormTag" CheckAddr = "bcpl_cg5$CheckAddr" Compswitch = "bcpl_cg6$Compswitch" WriteGetlp = "bcpl_cg7$WriteGetlp" WriteEntry = "bcpl_cg7$WriteEntry" WriteDefs = "bcpl_cg7$WriteDefs" WriteLinkage = "bcpl_cg7$WriteLinkage" WriteSymbol = "bcpl_cg8$WriteSymbol" WriteRelBits = "bcpl_cg8$WriteRelBits" WriteObjectMap = "bcpl_cg8$WriteObjectMap" WriteData = "bcpl_cg9$WriteData" WriteInstruction = "bcpl_cg9$WriteInstruction" ListCodeItem = "bcpl_cg9$ListCodeItem" $) global // 300 - 399 are reserved for the code generator. $( AbsRelBits : 300 Address : 301 ArgCount : 302 ArgLen : 303 CgTempList : 304 CodeFirst : 305 CodeP : 306 CodeV : 307 Comment : 308 DeferredJumpLabel : 310 DefsLength : 311 DefsRelbits : 312 EntryLabel : 313 GetLpLabel : 314 IndicatorsSetBy : 315 Jumpsw : 316 LabMaxArg : 317 LabMaxSSP : 318 LabTable : 320 LC : 321 LineMapFirst : 322 LineMapLength : 323 LineMapList : 324 LinkageLength : 325 LinkageRelbits : 326 LinkList : 327 Lrand : 328 MainEntriesList : 330 MaxArgOffset : 331 MaxSSP : 332 NewLiteralsList : 333 OldLabel : 334 OldLiteralsList : 335 Param : 336 Rrand : 337 RegisterTemps : 338 RegisterUsage : 340 RelbitsFirst : 341 RelbitsLength : 342 RelbitsList : 343 RelbitsOffset : 344 Reloc : 345 ResultInfo : 346 ResultInfoList : 347 SaveSpaceSize : 348 SymbolLength : 350 SymbolRelbits : 351 StackRefTag : 352 SymtabFirst : 353 SymtabP : 354 SymtabV : 355 Tag : 356 TextLength : 357 TextRelbits : 358 UsageCounter : 360 $) manifest $( CgTempSize = 9 CodeSize = 1000 LabTableSize = 100 SymtabSize = 200 $) manifest // Flags for listing. $( CodeSwitch = 1 InstructionSwitch = 2 DataSwitch = 3 LabelSwitch = 4 LineCountSwitch = 5 SectionSwitch = 6 HeaderSwitch = 7 $) manifest // Relocation codes. $( RelText = $820 RelLink18 = $822 RelNegLink18 = $823 RelLink15 = $824 RelDef = $825 RelSymbol = $826 RelNegSymbol = $827 RelStat18 = $830 RelStat15 = $831 RelExtendedAbs = $836 // Ten bit count follows this code. $) manifest $( TagXrMask = $817 TagPrMask = $8700000000100 Mod16 = $8777777777760 $) manifest // Modifiers and tags used in the code generator. $( Ap = $8000000000100 Ab = $8100000000100 Bp = $8200000000100 Bb = $8300000000100 Lp = $8400000000100 Lb = $8500000000100 Sp = $8600000000100 Sb = $8700000000100 Al = $805 Au = $801 Dl = $807 Du = $803 Ql = $806 Qu = $802 X0 = $810 X1 = $811 X2 = $812 X3 = $813 X4 = $814 X5 = $815 X6 = $816 X7 = $817 Ft2 = $846 Ic = $804 Star = $820 StarThenReg = $860 $) manifest // Internal codes for all machine registers used. $( Ar = 1 Qr = 2 Xr0 = 3 Xr1 = 4 Xr2 = 5 Xr3 = 6 Xr4 = 7 Xr5 = 8 Xr6 = 9 Xr7 = 10 Apr = 11 Abr = 12 Bpr = 13 Bbr = 14 Lpr = 15 Lbr = 16 Spr = 17 Sbr = 18 EAQr = 19 NumberOfRegisters = 20 AorQr = 22 AnyPr = 23 AnyXr = 24 $) // // // ----------------------------------------------------------- // // // Historical Background // // This edition of the Multics software materials and documentation is provided and donated // to Massachusetts Institute of Technology by Group Bull including Bull HN Information Systems Inc. // as a contribution to computer science knowledge. // This donation is made also to give evidence of the common contributions of Massachusetts Institute of Technology, // Bell Laboratories, General Electric, Honeywell Information Systems Inc., Honeywell Bull Inc., Groupe Bull // and Bull HN Information Systems Inc. to the development of this operating system. // Multics development was initiated by Massachusetts Institute of Technology Project MAC (1963-1970), // renamed the MIT Laboratory for Computer Science and Artificial Intelligence in the mid 1970s, under the leadership // of Professor Fernando Jose Corbato. Users consider that Multics provided the best software architecture for // managing computer hardware properly and for executing programs. Many subsequent operating systems // incorporated Multics principles. // Multics was distributed in 1975 to 2000 by Group Bull in Europe , and in the U.S. by Bull HN Information Systems Inc., // as successor in interest by change in name only to Honeywell Bull Inc. and Honeywell Information Systems Inc. . // // ----------------------------------------------------------- // // Permission to use, copy, modify, and distribute these programs and their documentation for any purpose and without // fee is hereby granted,provided that the below copyright notice and historical background appear in all copies // and that both the copyright notice and historical background and this permission notice appear in supporting // documentation, and that the names of MIT, HIS, Bull or Bull HN not be used in advertising or publicity pertaining // to distribution of the programs without specific prior written permission. // Copyright 1972 by Massachusetts Institute of Technology and Honeywell Information Systems Inc. // Copyright 2006 by Bull HN Information Systems Inc. // Copyright 2006 by Bull SAS // All Rights Reserved //