# Vault 7: Projects

This publication series is about specific projects related to the Vault 7 main publication.

### Protego

# PIC24FJ32MC10X -- Program Memory

- 1
- 2
- 3
- 4
…
- 19
- 20

PIC24F Family Reference Manual
DS39715A-page 4-2 Advance Information © 2007 Microchip Technology Inc.
4.1 PROGRAM MEMORY ADDRESS MAP
The PIC24F devices can have up to 4M x 24-bit program memory address space, as shown in
Figure 4-2. There are three methods for accessing program space.
1. Via the 23-bit PC.
2. Via table read (TBLRD) and table write (TBLWT) instructions.
3. By mapping any 32-Kbyte segment of program memory into the data memory address
space.
The program memory map is divided into the user program space and the configuration space.
The user program space (000000h to 7FFFFFh) contains the Reset vector, interrupt vector tables
and program memory. Device Configuration registers and Device ID sections are mapped in con-
figuration space. Configuration bits and Device IDs can be read from these locations; however,
the Configuration bits can be set or cleared by programming the desired values in the Flash
Configuration Words. The top two words of the on-chip program memory are reserved for config-
uration information. On device Reset, the configuration information is copied into the appropriate
Configuration registers. For more information on Configuration bits, see Section 32. “Device
Configuration”.
4.1.1 Program Memory Organization
The program memory space is organized as word addressable blocks. Although it is treated as
24 bits wide, it is more appropriate to think of each address of the program memory as a lower
and upper word, with the upper byte of the upper word being unimplemented. The lower word
always has an even address, while the upper word has an odd address (Figure 4-1).
Program memory addresses are always word-aligned on the lower word, and addresses are
incremented or decremented by two during code execution.
Figure 4-1: Program Memory Organization
0
8
16
000001h
000003h
000005h
000007h
23
00000000
00000000
00000000
00000000
Program Memory
‘Phantom’ Byte
(Read as ‘0’)
Instruction Width
most significant word least significant word
msw PC Address
000000h
000002h
000004h
000006h
(lsw Address)
Address

- 1
- 2
- 3
- 4
…
- 19
- 20