News:

PROTON pic BASIC Compilers for PIC, PIC24, dsPIC33

Main Menu

garbage collection

Started by keytapper, Mar 31, 2025, 09:53 PM

Previous topic - Next topic

keytapper

Hi everyone,
I'm the one that wants to wear tightest shoes  ;D
So I'm doing some experiment with a midrange MCU. I thought there could be a way to reuse an array portion.
 My question is: what about a delete command?. Either possible to alias a part of the old array for a new one. Also the rest of the old array.
Unless to go for the direct access to a memory part, which is not flexible.

What are your ideas?
Ignorance comes with a cost

trastikata

#1
Deleting an array variable has no meaning other than saying "from now on don't use that RAM space and it's free to be used for something else". Same can be achieved with aliasing, just have to be careful to not overwrite things.

Here's an example of a real program aliasing and reusing RAM space in 16b device, however it is all the same in any 8-bit device, only in 8-bit devices aliasing position within the array is assigned with "#" and not "_":

Dim faMlxPixelArray[768] As Float
Dim swaMlxPixelArray[768] As SWord At faMlxPixelArray_0
Dim waMlxPixelArray[768] As Word
Dim waMlxColorArray[768] As Word

Dim swaMlxPixelArray[768] As SWord At faMlxCoef4Array_0
Dim faMlxCoef1Array[768] As Float
Dim sdaMlxCoef1Array[768] As SDword At faMlxCoef1Array_0
Dim faMlxCoef2Array[768] As Float
Dim sdaMlxCoef2Array[768] As SDword At faMlxCoef2Array_0
Dim faMlxCoef3Array[768] As Float
Dim sdaMlxCoef3Array[768] As SDword At faMlxCoef3Array_0
Dim faMlxCoef4Array[768] As Float
Dim sdaMlxCoef4Array[768] As SDword At faMlxCoef4Array_0

Dim wTemp1Mlx As Word           At waMlxPixelArray_0
Dim swTemp1Mlx As SWord         At waMlxPixelArray_0
Dim wTemp2Mlx As Word           At waMlxPixelArray_2
Dim swTemp2Mlx As SWord         At waMlxPixelArray_2
Dim fTemp1Mlx As Float          At waMlxPixelArray_4 
Dim dTemp1Mlx As Dword          At waMlxPixelArray_4
Dim sdTemp1Mlx As SDword        At waMlxPixelArray_4   
Dim fTemp2Mlx As Float          At waMlxPixelArray_8 
Dim dTemp2Mlx As Dword          At waMlxPixelArray_8   
Dim sdTemp2Mlx As SDword        At waMlxPixelArray_8
Dim wTemp3Mlx As Word           At waMlxPixelArray_12
Dim swTemp3Mlx As SWord         At waMlxPixelArray_12
Dim wTemp4Mlx As Word           At waMlxPixelArray_14
Dim swTemp4Mlx As SWord         At waMlxPixelArray_14
Dim wTemp5Mlx As Word           At waMlxPixelArray_16
Dim swTemp5Mlx As SWord         At waMlxPixelArray_16
Dim fTemp3Mlx As Float          At waMlxPixelArray_18 
Dim dTemp3Mlx As Dword          At waMlxPixelArray_18   
Dim sdTemp3Mlx As SDword        At waMlxPixelArray_18
Dim swTemp6Mlx As SWord         At waMlxPixelArray_22
Dim swTemp7Mlx As SWord         At waMlxPixelArray_24
Dim swTemp8Mlx As SWord         At waMlxPixelArray_26
Dim wTemp8Mlx As Word           At waMlxPixelArray_26

Dim fdTemp1Mlx As Double        At waMlxPixelArray_500 
Dim fdTemp2Mlx As Double        At waMlxPixelArray_508 
Dim fdTemp3Mlx As Double        At waMlxPixelArray_516 
Dim fdTemp4Mlx As Double        At waMlxPixelArray_524 
Dim fdTemp5Mlx As Double        At waMlxPixelArray_532
Dim fdTemp6Mlx As Double        At waMlxPixelArray_540
Dim fdTemp7Mlx As Double        At waMlxPixelArray_548
Dim fdTemp8Mlx As Double        At waMlxPixelArray_556
Dim fdTemp9Mlx As Double        At waMlxPixelArray_564
Dim fdTemp0Mlx As Double        At waMlxPixelArray_572


Dim swKVdd As SWord             At waMlxPixelArray_30
Dim swVdd25 As SWord            At waMlxPixelArray_32
Dim fVdd As Double              At waMlxPixelArray_34
Dim fKVPTAT As Double           At waMlxPixelArray_42
Dim fKTPTAT As Double           At waMlxPixelArray_50
Dim fdV As Double               At waMlxPixelArray_58
Dim swVPTAT25 As SWord          At waMlxPixelArray_66
Dim swVPTAT As SWord            At waMlxPixelArray_68
Dim fVPTATART As Double         At waMlxPixelArray_70
Dim swVbe As SWord              At waMlxPixelArray_78
Dim swAlphaPTAT As SWord        At waMlxPixelArray_80
Dim fTa As Double               At waMlxPixelArray_82
Dim swOffAverage As SWord       At waMlxPixelArray_90
Dim wOccScaleRow As Word        At waMlxPixelArray_92
Dim wOccScaleCol As Word        At waMlxPixelArray_94
Dim wOccScaleRem As Word        At waMlxPixelArray_96
Dim sbaOccRow[24] As SByte      At waMlxPixelArray_98
Dim sbaOccCol[32] As SByte      At waMlxPixelArray_122
Dim wKTaScale1 As Word          At waMlxPixelArray_154
Dim wKTaScale2 As Word          At waMlxPixelArray_156
Dim fKta_ij As Double           At waMlxPixelArray_158 
Dim wKvScale As Word            At waMlxPixelArray_166
Dim bRowMlx As Word             At waMlxPixelArray_168
Dim bColMlx As Word             At waMlxPixelArray_170
Dim fKv_ij As Double            At waMlxPixelArray_172
Dim swKta_ij As SWord           At waMlxPixelArray_180
Dim fPixGainCp_SP0 As Double    At waMlxPixelArray_182
Dim fPixGainCp_SP1 As Double    At waMlxPixelArray_190
Dim fPixOsCp_SP0 As Double      At waMlxPixelArray_198
Dim fPixOsCp_SP1 As Double      At waMlxPixelArray_206
Dim swOffCp_SP0 As SWord        At waMlxPixelArray_214
Dim swOffCp_SP1 As SWord        At waMlxPixelArray_216
Dim fKTaCp As Double            At waMlxPixelArray_224
Dim fKVCp As Double             At waMlxPixelArray_232
Dim fTGC As Double              At waMlxPixelArray_240
Dim fKsTa As Double             At waMlxPixelArray_248
Dim fdACp_SP0 As Double         At waMlxPixelArray_256
Dim fdACp_SP1 As Double         At waMlxPixelArray_264 
Dim wAScale_CP As Word          At waMlxPixelArray_272
Dim swCP_P1_P0_Rat As SWord     At waMlxPixelArray_274
Dim sbaAccRow[24] As SByte      At waMlxPixelArray_276
Dim sbaAccCol[32] As SByte      At waMlxPixelArray_300
Dim wPattern As Word            At waMlxPixelArray_332
Dim wAref As Word               At waMlxPixelArray_334
Dim wAscale As Word             At waMlxPixelArray_336
Dim wACCScaleRow As Word        At waMlxPixelArray_338
Dim wACCScaleCol As Word        At waMlxPixelArray_340
Dim wACCScaleRem As Word        At waMlxPixelArray_342
Dim fdA_ij As Double            At waMlxPixelArray_344 
Dim fKGain As Double            At waMlxPixelArray_352
Dim fdResolution As Double      At waMlxPixelArray_360
Dim fKsTo2 As Double            At waMlxPixelArray_368

keytapper

Yes, it's as mentioned about aliasing.
My idea is that for some time I'd like to use one name and perhaps a huge allocation, then later I prefer to give a different meaning to another space in RAM. Wouldn't be shorter?..... even for typing.

Anyway you gave a clearer picture.
Ignorance comes with a cost