This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

mmap() Assembler

Other Parts Discussed in Thread: TMS320C5515

Dear,

I am using a TMS320C5515 DSP processor.

When running through the examples, i noticed the usage of mmap().
What exactly is the purpose of this?

for example:

mov #10,BSA45 does not use mmap

where mov #10,mmap(ST0_55) does use the mmap.

In the first case, using mmap or not does not matter, but in the second one a warning occures when not using mmap.
I can see in the assembler guide that the mov Smem,BSA45 is included were ST0_55 is not.

I do understand that mmap forces the XDP and SP to 0 so dma is always reffered to address 0 but I dont understand why ST0_55 needs mmap and BSA45 does not need it. Both are registers of the CPU. And why ST0_55 is not included in the assembler list (loading immediate values to CPU registers).

Thanks

  • The mmap modifier means "memory-mapped register."  To save opcode space, not every possible combination of operands is supported.  That is, not every register operand is really a register operand; sometimes you have to use mmap addressing, which is actually a memory read/write.

    The instruction MOV #10, BSA45 actually uses an opcode dedicated to BSA45 and does not use memory.

    The instruction MOV #10, mmap(ST0_55) is actually of the form MOV #n, Smem, and writes to memory.

  • ok,

    so the mov #1,BSA45 does not use the address of the register to access it? just a logical number in the opcode that de decoder knows?

    and mov #1,mmap(ST0_55)   works the same as e.g.  mov #10,*(#0x004C) ?

    In fact, mov #1,BSA45  does not have the same execution flow as mov #1,mmap(BSA45)? (first = "access using number as operand", second = "normal addressed access using address as operand")

    is that correct?

    Thank you!!!!