toklibios.cdb
来自「dsp在音频处理中的运用」· CDB 代码 · 共 1,255 行 · 第 1/5 页
CDB
1,255 行
prop Label :: "previous value for autocalculate" prop Visible :: 0 prop Writable :: 0 prop NoGen :: 1 } global ENABLEINST :: 1 { prop Type :: "{21455EA0-B96A-11cf-9BFE-0000C0AC14C7}" prop Label :: "Enable Real Time Analysis" prop JSName :: "ENABLEINST" prop Visible :: 1 prop Writable :: 1 prop NoGen :: 0 prop Set :: (if ($1 != self.ENABLEINST) {if ($1) {RTA_toHost.Create("HST"), RTA_fromHost.Create("HST"), RTA_dispatcher.Create("HST"), IDL_busyObj.Create("IDL"), IDL.USEIDLBUSYOBJ = 1, IDL_cpuLoad.Create("IDL"), IDL.AUTOCALCULATE = self.OLDAUTOCALCULATE} else {RTA_toHost.Delete("HST"), RTA_fromHost.Delete("HST"), RTA_dispatcher.Delete("HST"), IDL_busyObj.Delete("IDL"), IDL.USEIDLBUSYOBJ = 0, IDL_cpuLoad.Delete("IDL"), self.OLDAUTOCALCULATE = IDL.AUTOCALCULATE, IDL.AUTOCALCULATE = 0}, self.ENABLEINST = $1} , "ok") } global INSTRUMENTED :: 1 { prop Type :: "{21455EA0-B96A-11cf-9BFE-0000C0AC14C7}" prop Label :: "Use Instrumented BIOS library" prop JSName :: "INSTRUMENTED" prop Visible :: 1 prop Writable :: 1 prop NoGen :: 1 } global CGENERATE :: 1 { prop Type :: "{21455EA0-B96A-11cf-9BFE-0000C0AC14C7}" prop Label :: "Do C Generation" prop Visible :: 0 prop Writable :: 1 prop NoGen :: 1 } global ENABLEDLL :: 0 { prop Type :: "{21455EA0-B96A-11cf-9BFE-0000C0AC14C7}" prop Label :: "Enable Dynamic Loading" prop JSName :: "ENABLEDLL" prop Visible :: 0 prop Writable :: 1 prop NoGen :: 1 } global LARGEMODEL :: = if self.MEMORYMODEL == "LARGE" {1} else {if self.MEMORYMODEL == "HUGE" {2} else {0}} { prop Type :: "{21455EA0-B96A-11cf-9BFE-0000C0AC14C7}" prop Visible :: 0 prop Writable :: 0 prop NoGen :: 0 } global ENABLEICACHE :: 0 { prop Type :: "{21455EA0-B96A-11cf-9BFE-0000C0AC14C7}" prop Label :: "Enable I-Cache Programming" prop JSName :: "ENABLEICACHE" prop Visible :: if GBL.DSPSUBTYPE == 5561 {1} else {0} prop Writable :: 1 prop NoGen :: 0 prop Set :: (if ($1 != self.ENABLEICACHE) {self.ENABLEICACHE = $1} , "ok") } global CACHETYPE :: 2 { prop Type :: "{21455EA2-B96A-11cf-9BFE-0000C0AC14C7}" prop Style :: 0x02 prop Nogen :: 0 } global ICACHE :: "2-Way Two RAMset" { prop Type :: "{21455EA1-B96A-11cf-9BFE-0000C0AC14C7}" prop Enum :: "2-Way no RAMset,2-Way One RAMset,2-Way Two RAMset" prop Label :: "I-cache configuration" prop JSName :: "ICACHE" prop Visible :: if GBL.DSPSUBTYPE == 5561 {1} else {0} prop Writable :: if self.ENABLEICACHE == 1 {1} else {0} prop NoGen :: 1 prop Set :: (self.ICACHE = $1, if (self.ICACHE == "2-Way no RAMset") {self.CACHETYPE = 0, "ok"} else {if (self.ICACHE == "2-Way One RAMset") {self.CACHETYPE = 1, "ok"} else {self.CACHETYPE = 2, "ok"}}) } global CACHEICRTAG1 :: 16252928 { prop Type :: "{3EE4CB80-E273-11d0-BB8F-0000C008F2E9}" prop Style :: 0x20 prop Label :: "ICRTAG1 address (24bit address)" prop JSName :: "CACHEICRTAG1" prop Format :: "0x%06x" prop Visible :: if GBL.DSPSUBTYPE == 5561 {1} else {0} prop Writable :: if ((self.ICACHE != "2-Way no RAMset") && (self.ENABLEICACHE == 1)) {1} else {0} prop NoGen :: 0 } global CACHEICRTAG2 :: 16257024 { prop Type :: "{3EE4CB80-E273-11d0-BB8F-0000C008F2E9}" prop Style :: 0x20 prop Label :: "ICRTAG2 address (24bit address)" prop JSName :: "CACHEICRTAG2" prop Format :: "0x%06x" prop Visible :: if GBL.DSPSUBTYPE == 5561 {1} else {0} prop Writable :: if ((self.ICACHE == "2-Way Two RAMset") && (self.ENABLEICACHE == 1)) {1} else {0} prop NoGen :: 0 } global SUPPORTCSL :: 0 { prop Type :: "{21455EA0-B96A-11cf-9BFE-0000C0AC14C7}" prop NoGen :: 0 } global ENABLEALLTRC :: 1 { prop Type :: "{21455EA0-B96A-11cf-9BFE-0000C0AC14C7}" prop Label :: "Enable All TRC Trace Event Classes" prop JSName :: "ENABLEALLTRC" prop Visible :: 1 prop Writable :: 1 prop NoGen :: 1 prop Set :: (if ($1) {self.TRCMASKVALUE = 0xDBEF} else {self.TRCMASKVALUE = 0x4000}, self.ENABLEALLTRC = $1, "ok") } global TRCMASKVALUE :: 56303 { prop Type :: "{21455EA2-B96A-11cf-9BFE-0000C0AC14C7}" prop NoGen :: 0 } global CALLCSLCFGINIT :: = self.DISPCALLCSLCFGINIT { prop Type :: "{21455EA0-B96A-11cf-9BFE-0000C0AC14C7}" prop NoGen :: 0 } global BIOS_BOOTFXN :: @_FXN_F_nop { prop Type :: "{7C434D00-1629-11d0-9BFE-0000C0AC14C7}" prop Label :: "BIOS boot function" prop JSName :: "BIOS_BOOTFXN" prop Visible :: 0 prop Writable :: 1 prop NoGen :: 0 } global DCRPOSTEDWRITE :: 1 { prop Type :: "{21455EA0-B96A-11cf-9BFE-0000C0AC14C7}" prop Label :: "DPORT write in posted mode" prop JSName :: "DCRPOSTEDWRITE" prop Visible :: 0 prop Writable :: 1 prop NoGen :: 0 prop Set :: (if ($1 == 0) {self.DCRPOSTEDWRITE = $1} else {self.DCRPOSTEDWRITE = $1}, "ok") } global CDBPATH :: "" { prop Type :: "{21455EA3-B96A-11cf-9BFE-0000C0AC14C7}" prop Label :: "CDB search path in COFF file" prop JSName :: "CDBRELATIVEPATH" prop Visible :: 0 prop Writable :: 1 prop NoGen :: 1 }}type MEM { isa ObjectMgr prop Label :: "MEM - Memory Section Manager" prop name :: "MEM" prop DependsOn :: "SEM" prop IsContainedIn :: SYSTEM prop GlobalIcon :: 115 prop InstanceIcon :: 116 prop GlobalHelpTopic :: (108) prop InstanceHelpTopic :: (208) prop InstancePropertyPage :: ("{3D658E70-05E7-11d0-BD44-0020AFEE33C8}") prop GlobalPropertyPage :: ("{3D658E71-05E7-11d0-BD44-0020AFEE33C8}") prop heapLabelStr :: (self.iHeapId) prop _cmd55stksz :: (MEM.STACKSIZE * 2) prop _cmd55systksz :: (MEM.SYSSTACKSIZE * 2) prop _cmd55origin :: (self.base * 2) prop _cmd55len :: (self.len * 2) prop _cmd55heapsize :: (self.iHeapSize * 2) prop _cmd55heaplen :: (self.iHeapSize * 2) prop GenLinkPrologue :: (if (GBL.DSPTYPE == 55) {"-stack 0x%1x\n-sysstack 0x%2x\n\nMEMORY {%4t\0, _cmd55stksz, _cmd55systksz"} else {"-stack 0x%1x\nMEMORY {%4t\0, _stackSize"}) prop _stackSize :: MEM.STACKSIZE prop _sysstackSize :: MEM.SYSSTACKSIZE prop _sysstackSeg :: MEM.SYSSTACKSEG prop _sysstackSegPg :: (if MEM.SYSSTACKSEG.space() == "code" {" PAGE 0"} else {if MEM.SYSSTACKSEG.space() == "data" {" PAGE 1"} else {if MEM.SYSSTACKSEG.space() == "io" {" PAGE 2"} else {" PAGE 0"}}}) prop AllocType :: (if (self.REUSE == 0 && self.USERCMD == 0) {"19\0, _argsString, _argsSeg, _midPlace, _sysdataString, _sysdataSeg, _thirdPlace, _trcinitString, _trcinitSeg, _midPlace, _gblinitString, _gblinitSeg, _midPlace, _memObjString, _memObjSeg, _midPlace, _sysinitString, _initSeg, _sysinitPlace, _sysregsString, _regsSeg, _midPlace, _bssString, _bssSeg, _firstPlace, _farString, _farSeg, _secondPlace, _cinitString, _cinitSeg, _midPlace, _pinitString, _pinitSeg, _midPlace, _dataString, _dataSeg, _midPlace, _constString, _constSeg, _midPlace, _switchString, _switchSeg, _midPlace, _cioString, _cioSeg, _midPlace, _textString, _textSeg, _midPlace, _frtString, _frtSeg, _midPlace, _biosString, _biosSeg, _midPlace, _stackString, _stackSeg, _midPlace"} else {if (self.REUSE == 0 && self.USERCMD == 1) {"9\0, _argsString, _argsSeg, _midPlace, _sysdataString, _sysdataSeg, _thirdPlace, _trcinitString, _trcinitSeg, _midPlace, _gblinitString, _gblinitSeg, _midPlace, _memObjString, _memObjSeg, _midPlace, _sysinitString, _initSeg, _sysinitPlace, _sysregsString, _regsSeg, _midPlace, _biosString, _biosSeg, _midPlace, _stackString, _stackSeg, _midPlace"} else {if (self.REUSE == 1 && self.USERCMD == 0) {"18\0, _argsString, _argsSeg, _midPlace, _sysdataString, _sysdataSeg, _thirdPlace, _trcinitString, _trcinitSeg, _midPlace, _gblinitString, _gblinitSeg, _midPlace, _memObjString, _memObjSeg, _midPlace, _sysregsString, _regsSeg, _midPlace, _bssString, _bssSeg, _firstPlace, _farString, _farSeg, _secondPlace, _cinitString, _cinitSeg, _midPlace, _pinitString, _pinitSeg, _midPlace, _dataString, _dataSeg, _midPlace, _constString, _constSeg, _midPlace, _switchString, _switchSeg, _midPlace, _cioString, _cioSeg, _midPlace, _textString, _textSeg, _midPlace, _frtString, _frtSeg, _midPlace, _biosString, _biosSeg, _midPlace, _stackString, _stackSeg, _midPlace"} else {"8\0, _argsString, _argsSeg, _midPlace, _sysdataString, _sysdataSeg, _thirdPlace, _trcinitString, _trcinitSeg, _midPlace, _gblinitString, _gblinitSeg, _midPlace, _memObjString, _memObjSeg, _midPlace, _sysregsString, _regsSeg, _midPlace, _biosString, _biosSeg, _midPlace, _stackString, _stackSeg, _midPlace"}}}) prop _firstPlace :: 0 prop _secondPlace :: 0 + 1 prop _thirdPlace :: 0 + 2 prop _midPlace :: (0x7fffff / 2) prop _sysinitPlace :: (0x7fffff / 2) prop _argsString :: ("%8t .args: align = 0x4 fill=0 block(0x20000) {%12t\n *(.args)\n . += 0x%1x;%8t\n }\0, _argsSize") prop _bssString :: ("%8t .bss: block(0x20000) {}") prop _farString :: ("%8t .far: {}") prop _cinitString :: (if (self.ENABLELOADSEG == 1) {if (MEM.CINITSEG == MEM.LOADCINITSEG) {"%8t .cinit: block(0x20000) {}"} else {"%8t .cinit: {} load > %1s%2s, run\0, _loadcinitSeg, _cinitpg"}} else {"%8t .cinit: block(0x20000) {}"}) prop _pinitString :: (if (self.ENABLELOADSEG == 1) {if (MEM.PINITSEG == MEM.LOADPINITSEG) {"%8t .pinit: block(0x20000) {}"} else {"%8t .pinit: {} load > %1s%2s, run\0, _loadpinitSeg, _pinitpg"}} else {"%8t .pinit: block(0x20000) {}"}) prop _trcinitString :: (if (self.ENABLELOADSEG == 1) {if (MEM.TRCINITSEG == MEM.LOADTRCINITSEG) {"%8t .trcdata: {}"} else {"%8t .trcdata: {} load > %1s%2s, run\0, _loadtrcinitSeg, _trcdatapg"}} else {"%8t .trcdata: {}"}) prop _gblinitString :: (if (self.ENABLELOADSEG == 1) {if (MEM.BIOSINITSEG == MEM.LOADBIOSINITSEG) {"%8t .gblinit: block(0x20000) {}"} else {"%8t .gblinit: {} load > %1s%2s, run\0, _loadgblinitSeg, _gblinitpg"}} else {"%8t .gblinit: block(0x20000) {}"}) prop _dataString :: ("%8t .data: block(0x20000) {}") prop _constString :: (if (self.ENABLELOADSEG == 1) {if (MEM.CONSTSEG == MEM.LOADCONSTSEG) {if 55 == 28 {"%8t .const: {}"} else {"%8t GROUP {\n %8t .const: {} \n %8t .printf (COPY): {} \n%8t }"}} else {if ((55 == 54) || (55 == 28)) {if 55 == 28 {"%8t .const: {} load > %1s PAGE %2s, run\0, _loadconstSeg, _pg"} else {"%8t GROUP {\n %8t .const: {} load > %1s PAGE %2s \n %8t .printf (COPY): {} \n%8t } run\0, _loadconstSeg, _pg"}} else {if (55 == 55) {"%8t GROUP {\n %8t .const: {} load > %1s%2s \n %8t .printf (COPY): {} \n%8t } run\0, _loadconstSeg, _constpg"} else {"%8t GROUP {\n %8t .const: {} load > %1s \n %8t .printf (COPY): {} \n%8t } run\0, _loadconstSeg"}}}} else {if 55 == 28 {"%8t .const: {}"} else {"%8t GROUP {\n %8t .const: {} \n %8t .printf (COPY): {} \n%8t }"}}) prop _switchString :: (if (self.ENABLELOADSEG == 1) {if (MEM.SWITCHSEG == MEM.LOADSWITCHSEG) {"%8t .switch: {}"} else {"%8t .switch: {} load > %1s%2s, run\0, _loadswitchSeg, _switchpg"}} else {"%8t .switch: {}"}) prop _sysmemString :: ("%8t .sysmem: {}") prop _cioString :: ("%8t .cio: {}") prop _memObjString :: ("%8t .mem: {}") prop _sysdataString :: (if ((GBL.ROM == 0) && (GBL.DSPTYPE == 54)) {"%8t .sysdata: align = 128 {%12t\n GBL_A_SYSPAGE = .;\n GBL_A_SYSDP = GBL_A_SYSPAGE >> 7;\n %8t }"} else {"%8t .sysdata: block(0x20000) {}"}) prop _sysinitString :: (if (self.ENABLELOADSEG == 1) {if (MEM.INITSEG == MEM.LOADINITSEG) {"%8t .sysinit: {}"} else {"%8t .sysinit: {} load > %1s%2s, run\0, _loadinitSeg, _sysinitpg"}} else {"%8t .sysinit: {}"}) prop _sysregsString :: ("%8t .sysregs: {}") prop _textString :: (if (self.ENABLELOADSEG == 1) {if (MEM.TEXTSEG == MEM.LOADTEXTSEG) {"%8t .text: {}"} else {"%8t .text: {} load > %1s%2s, run\0, _loadtextSeg, _textpg"}} else {"%8t .text: {}"}) prop _frtString :: ("%8t frt: {}") prop _biosString :: (if (self.ENABLELOADSEG == 1) {if (MEM.BIOSSEG == MEM.LOADBIOSSEG) {"%8t .bios: {}"} else {"%8t .bios: {} load > %1s%2s, run\0, _loadbiosSeg, _biospg"}} else {"%8t .bios: {}"}) prop _stackString :: (if (GBL.DSPTYPE == 62) {"%8t .stack: {%12t\n GBL_stackbeg = .;\n *(.stack)\n GBL_stackend = GBL_stackbeg + 0x%1x - 1;%12t\n _HWI_STKBOTTOM = GBL_stackbeg + 0x%1x - 4 & ~7;%12t\n _HWI_STKTOP = GBL_stackbeg;%8t\n }\0, _stackSize, _stackSize"} else {if (GBL.DSPTYPE == 54) {"%8t .stack: {%12t\n GBL_stackbeg = .;\n *(.stack)\n GBL_stackend = ((GBL_stackbeg + 0x%1x - 1) & 0xfffe) ;%8t\n _HWI_STKBOTTOM = GBL_stackend;%12t\n _HWI_STKTOP = GBL_stackbeg;%8t\n }\0, _stackSize"} else {if (GBL.DSPTYPE == 55) {"%8t GROUP { \n%16t .sysstack : align = 0x4 {%12t\n %16t GBL_sysstackbeg = .;\n %16t *(.sysstack)\n %16t GBL_sysstackend = GBL_sysstackbeg + 0x%2x -1 ;%12t\n %16t _HWI_SYSSTKTOP = GBL_sysstackbeg; %12t\n %16t_HWI_SYSSTKBOTTOM = (GBL_sysstackend+1);\n%16t} \n%16t .stack: align = 0x4 {%12t\n %16t GBL_stackbeg = .;\n %16t *(.stack)\n GBL_stackend = (GBL_stackbeg + 0x%1x - 1) ;%12t\n %16t _HWI_STKBOTTOM = (GBL_stackend+1);%12t\n %16t _HWI_STKTOP = (GBL_stackbeg);%16t\n }%8t\n } BLOCK(0x20000), run \0, _cmd55stksz, _cmd55systksz"} else {"%8t .stack: {%12t\n GBL_stackbeg = .;\n *(.stack)\n GBL_stackend = GBL_stackbeg + 0x%1x - 1;%8t\n _HWI_STKBOTTOM = GBL_stackbeg;%12t\n _HWI_STKTOP = (GBL_stackend + 1);%8t\n }\0, _stackSize"}}}) prop _memHdrSize :: 8 prop GenLinkEpilogue :: ("%0t}") prop _stackSeg :: MEM.STACKSEG prop _textSeg :: MEM.TEXTSEG prop _frtSeg :: MEM.TEXTSEG prop _biosSeg :: MEM.BIOSSEG prop _dataSeg :: MEM.DATASEG prop _cioSeg :: MEM.CIOSEG prop _sysmemSeg :: MEM.SYSMEMSEG prop _constSeg :: MEM.CONSTSEG prop _initSeg :: MEM.INITSEG prop _pinitSeg :: MEM.PINITSEG prop _trcinitSeg :: MEM.TRCINITSEG prop _gblinitSeg :: MEM.BIOSINITSEG prop _regsSeg :: MEM.SYSDATASEG prop _sysdataSeg :: MEM.SYSDATASEG prop _argsSeg :: MEM.ARGSSEG prop _argsSize :: MEM.ARGSSIZE prop _bssSeg :: MEM.BSSSEG prop _farSeg :: MEM.FARSEG prop _cinitSeg :: MEM.CINITSEG prop _memObjSeg :: MEM.CFGOBJSEG prop _switchSeg :: MEM.SWITCHSEG prop _loadtextSeg :: MEM.LOADTEXTSEG prop _loadbiosSeg :: MEM.LOADBIOSSEG prop _loadconstSeg :: MEM.LOADCONSTSEG prop _loadinitSeg :: MEM.LOADINITSEG prop _loadpinitSeg :: MEM.LOADPINITSEG prop _loadtrcinitSeg :: MEM.LOADTRCINITSEG prop _loadgblinitSeg :: MEM.LOADBIOSINITSEG prop _loadcinitSeg :: MEM.LOADCINITSEG prop _loadswitchSeg :: MEM.LOADSWITCHSEG prop _biospg :: (if (MEM.LOADBIOSSEG.space() == "code") {" PAGE 0"} else {if (MEM.LOADBIOSSEG.space() == "data") {" PAGE 1"} else {if (MEM.LOADBIOSSEG.space() == "io") {" PAGE 2"} else {" PAGE 0"}}}) prop _sysinitpg :: (if (MEM.LOADINITSEG.space() == "code") {" PAGE 0"} else {if (MEM.LOADINITSEG.space() == "data") {" PAGE 1"} else {if (MEM.LOADINITSEG.space() == "io") {" PAGE 2"} else {" PAGE 0"}}}) prop _gblinitpg :: (if (MEM.LOADBIOSINITSEG.space() == "code") {" PAGE 0"} else {if (MEM.LOADBIOSINITSEG.space() == "data") {" PAGE 1"} else {if (MEM.LOADBIOSINITSEG.space() == "io") {" PAGE 2"} else {" PAGE 0"}}}) prop _trcdatapg :: (if (MEM.LOADTRCINITSEG.space() == "code") {" PAGE 0"} else {if (MEM.LOADTRCINITSEG.space() == "data") {" PAGE 1"} else {if (MEM.LOADTRCINITSEG.space() == "io") {" PAGE 2"} else {" PAGE 0"}}}) prop _textpg :: (if (MEM.LOADTEXTSEG.space() == "code") {" PAGE 0"} else {if (MEM.LOADTEXTSEG.space() == "data") {" PAGE 1"} else {if (MEM.LOADTEXTSEG.space() == "io") {" PAGE 2"} else {" PAGE 0"}}}) prop _switchpg :: (if (MEM.LOADSWITCHSEG.space() == "code") {" PAGE 0"} else {if (MEM.LOADSWITCHSEG.space() == "data") {" PAGE 1"} else {if (MEM.LOADSWITCHSEG.space() == "io") {" PAGE 2"} else {" PAGE 0"}}}) prop _cinitpg :: (if (MEM.LOADCINITSEG.space() == "code") {" PAGE 0"} else {if (MEM.LOADCINITSEG.space() == "data") {" PAGE 1"} else {if (MEM.LOADCINITSEG.space() == "io") {" PAGE 2"} else {" PAGE 0"}}}) prop _pinitpg :: (if (MEM.LOADPINITSEG.space() == "code") {" PAGE 0"} else {if (MEM.LOADPINITSEG.space() == "data") {" PAGE 1"} else {if (MEM.LOADPINITSEG.space() == "io") {" PAGE 2"} else {" PAGE 0"}}}) prop _constpg :: (if (MEM.LOADCONSTSEG.space() == "code") {" PAGE 0"} else {if (MEM.LOADCONSTSEG.space() == "data") {" PAGE 1"} else {if (MEM.LOADCONSTSEG.space() == "io") {" PAGE 2"} else {" PAGE 0"}}}) prop AllocInst :: (if (self.iAllocHeap == 1) {"1\0, _instAllocDesc, _objMemSeg, _placement"} ) prop _instAllocDesc :: (if self.INITSEG.iAllocHeap && self.REUSE && self.INITSEG == self {"%8t GROUP {%12t\n .sysinitgap {. += 0x%2x;}\n .sysinit:\n .%0r$heap: {%16t\n _%0r_base = %0r$B;\n _%0r_length = %0r$L;\n . += 0x%1x;%12t\n }%8t\n } START(%0r$B), SIZE(%0r$L)\0, _heapsize, _sysinitgap, _heaplen"} else {"%8t .%0r$heap: {%12t\n %0r$B = .;\n _%0r_base = .;\n %0r$L = 0x%2x;\n _%0r_length = 0x%2x;\n . += 0x%1x;%8t\n }\0, _cmd55heapsize, _cmd55heaplen"}) prop _objMemSeg :: self prop _placement :: 0x7fffff - 1 prop _heapsize :: (self.iHeapSize) prop _heaplen :: (self.iHeapSize) prop _sysinitgap :: 2 * 1 prop GenInstLink :: (if GBL.DSPTYPE == 62 {"%0r %16t: origin = 0x%1x, %40tlen = 0x%2x%4t\0, _origin, _len"} else {if GBL.DSPTYPE == 55 {"PAGE %3d: %16t%0r: %26torigin = 0x%1x, %40tlen = 0x%2x%4t\0, _cmd55origin, _cmd55len, _page"} else {"PAGE %3d: %14t%0r: %26torigin = 0x%1x, %50tlen = 0x%2x%4t\0, _origin, _len, _page"}}) prop localInit :: ($d = "ok", scan ($i; MEM) {if ($i.space == "code" && $i.iAllocHeap == 1) {$d = self.error("Code memory cannot have a heap")} }, if (self.SEGZERO.iAllocHeap == 1) {self.SEGZERO.iReqHeapCount++} else {$d = self.error("Segment for DSP/BIOS objects must be a memory segment with a heap")}, if (self.MALLOCSEG.iAllocHeap == 1) {self.MALLOCSEG.iReqHeapCount++} else {$d = self.error("Segment for malloc()/free() must be a memory segment with a heap")}, $d) prop _page :: (self.page) prop _origin :: (self.base) prop _len :: (self.len) prop maxObjs :: (32767) prop codeMember :: (if $1.dynamicLoading == 1 {0} else {if GBL.DSPTYPE == 62 {(($1.space == "code") || ($1.space == "code/data"))} else {if GBL.DSPTYPE == 54 {($1.space == "code")} else {if GBL.DSPTYPE == 28 {($1.space == "code")} else {if GBL.DSPTYPE == 55 {(($1.space == "code") || ($1.space == "code/data"))} else {($1.space == "code/data")}}}}}) prop dataMember :: (if $1.dynamicLoading == 1 {0} else {if GBL.DSPTYPE == 62 {($1.space == "data" || $1.space == "code/data") && $1 != MEM_NULL} else {if GBL.DSPTYPE == 54 {(($1.space != "code") && ($1 != MEM_NULL)) && $1.space != "io"} else {if GBL.DSPTYPE == 28 {(($1.space != "code") && ($1 != MEM_NULL)) && $1.space != "io"} else {if GBL.DSPTYPE == 55 {($1.space == "data" || $1.space == "code/data") && $1 != MEM_NULL} else {(($1.space == "code/data") && ($1 != MEM_NULL))}}}}}) prop dataNullMember :: (if $1.dynamicLoading == 1 {0} else {if GBL.DSPTYPE == 62 {$1.space == "data" || $1.space == "code/data"} else {if GBL.DSPTYPE == 54 {$1.space != "code" && $1.space != "io"} else {if GBL.DSPTYPE == 28 {$1.space != "code" && $1.space != "io"} else {if GBL.DSPTYPE == 55 {$1.space == "data" || $1.space == "code/data"} else {$1.space == "code/data"}}}}}) prop dataCodeMember :: (if $1.dynamicLoading == 1 {0} else {if GBL.DSPTYPE == 62 {($1.space == "data" || $1.space == "code/data") && $1 != MEM_NULL} else {if GBL.DSPTYPE == 54 {$1.space == "code" && $1 != MEM_NULL} else {if GBL.DSPTYPE == 28 {$1.space == "code" && $1 != MEM_NULL} else {if GBL.DSPTYPE == 55 {($1.space == "data" || $1.space == "code/data") && $1 != MEM_NULL} else {$1.space == "code/data" && $1 != MEM_NULL}}}}}) prop memWritable :: (self.iIsModifiable && self.iDelUser != "MEM") prop validate :: ($e = self.checkMemOverlap($1), if ($e == "ok") {$e = self.checkHeapSize($1)} , if ($e == "ok") {$e = self.checkHeapSeg($1)} , $e) prop checkHeapSeg :: ($e = "ok", if ($1 == MEM_NULL && MEM.NOHEAPS == 0) {if (MEM.MALLOCSEG == MEM_NULL) {$e = ("Heaps are enabled, but the segment for malloc (MEM.MALLOCSEG) is not set correctly. Please create a heap in one of your data segments and set MEM.MALLOCSEG to it.")} , if (MEM.SEGZERO == MEM_NULL) {$e = ("Heaps are enabled, but the segment for DSP/BIOS Objects (MEM.BIOSOBJSEG) is not set correctly. Please create a heap in one of your data segments and set MEM.BIOSOBJSEG to it.")} } , $e) prop checkHeapSize :: ($e = "ok", if (MEM.NOHEAPS == 0) {if ($1.iAllocHeap && $1 != MEM_NULL) {if ($1.iHeapSize > $1.len) {$e = ("MEM segment %s: heap cannot be larger than the length of segment that contains it.")} } } , $e) prop checkMemOverlap :: ($e = "ok", if ($1 != MEM_NULL && $1.iIsUsed == 1) {if ($1.len == 0) {$a = $1.base} else {$a = ($1.base + $1.len - 1)}, scan ($j; MEM) {if ($1 != $j && $j != MEM_NULL && $j.iIsUsed == 1 && (GBL.DSPTYPE == 62 || $1.space == $j.space)) {if (!($j == CACHE_L2 && GBL.L2CONFIGURE == 0)) {$b = $j.base, if ($j.len == 0) {$c = $j.base} else {$c = ($j.base + $j.len - 1)}, if ($a >= $b && $1.base <= $c) {$e = ("MEM segment %s: overlaps with another segment or cache configuration."), break} } } }} , $e) prop _spaceEnum :: (self.ENUMSPACE) prop checkHeapId :: ($e = "ok", scan ($i; MEM) {if ($i.iAllocHeap == 1 && $i.iUserHeapId == 1 && $i.iHeapId == $1 && $i.iHeapId != @segment_name) {$e = self.error("This identifier label is already in use"), break} }, $e)
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?