I have a function with the following signature:
Code: Select all
function mmc_Fat32_Rename(var OldName: TLongFileName; var NewName: TLongFileName): boolean;
Code: Select all
const LongFnLength = 255; // size of a long filename
type TLongFileName = string[LongFnLength];
Code: Select all
success := mmc_Fat32_Rename('abc.txt', 'xyz.txt');
As far as I can see in the listing below, both texts are placed in the same global ram memory location (_main_Local_Text), of which the address is passed as value to both parameters (var parameters). Of course both parameters point to the same memory location, showing the same (last passed) string...
Code: Select all
;TestLFNBib.mpas,367 :: success := mmc_Fat32_Rename('abc.txt', 'xyz.txt');
0x55C4 0x0E1F MOVLW _main_Local_Text
0x55C6 0x6EE1 MOVWF FSR1L
0x55C8 0x0E04 MOVLW hi_addr(_main_Local_Text)
0x55CA 0x6EE2 MOVWF FSR1H
0x55CC 0x0E61 MOVLW 97
0x55CE 0x6EE6 MOVWF POSTINC1
0x55D0 0x0E62 MOVLW 98
0x55D2 0x6EE6 MOVWF POSTINC1
0x55D4 0x0E63 MOVLW 99
0x55D6 0x6EE6 MOVWF POSTINC1
0x55D8 0x0E2E MOVLW 46
0x55DA 0x6EE6 MOVWF POSTINC1
0x55DC 0x0E74 MOVLW 116
0x55DE 0x6EE6 MOVWF POSTINC1
0x55E0 0x0E78 MOVLW 120
0x55E2 0x6EE6 MOVWF POSTINC1
0x55E4 0x0E74 MOVLW 116
0x55E6 0x6EE6 MOVWF POSTINC1
0x55E8 0x6AE6 CLRF POSTINC1
0x55EA 0x0E1F MOVLW _main_Local_Text
0x55EC 0x0104 MOVLB 4
0x55EE 0x6F36 MOVWF FARG_mmc_Fat32_Rename_OldName, 1
0x55F0 0x0E04 MOVLW hi_addr(_main_Local_Text)
0x55F2 0x6F37 MOVWF FARG_mmc_Fat32_Rename_OldName+1, 1
0x55F4 0x0E1F MOVLW _main_Local_Text
0x55F6 0x6EE1 MOVWF FSR1L
0x55F8 0x0E04 MOVLW hi_addr(_main_Local_Text)
0x55FA 0x6EE2 MOVWF FSR1H
0x55FC 0x0E78 MOVLW 120
0x55FE 0x6EE6 MOVWF POSTINC1
0x5600 0x0E79 MOVLW 121
0x5602 0x6EE6 MOVWF POSTINC1
0x5604 0x0E7A MOVLW 122
0x5606 0x6EE6 MOVWF POSTINC1
0x5608 0x0E2E MOVLW 46
0x560A 0x6EE6 MOVWF POSTINC1
0x560C 0x0E74 MOVLW 116
0x560E 0x6EE6 MOVWF POSTINC1
0x5610 0x0E78 MOVLW 120
0x5612 0x6EE6 MOVWF POSTINC1
0x5614 0x0E74 MOVLW 116
0x5616 0x6EE6 MOVWF POSTINC1
0x5618 0x6AE6 CLRF POSTINC1
0x561A 0x0E1F MOVLW _main_Local_Text
0x561C 0x6F38 MOVWF FARG_mmc_Fat32_Rename_NewName, 1
0x561E 0x0E04 MOVLW hi_addr(_main_Local_Text)
0x5620 0x6F39 MOVWF FARG_mmc_Fat32_Rename_NewName+1, 1
0x5622 0xF024EC3E CALL _mmc_Fat32_Rename, 0