# Vault 7: Projects

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

### Protego

# PIC24FJ64GA004 - Programmers Reference Manual

- 1
- 2
…
- 461
- 462
- 463
- 464
- 465
…
- 501
- 502

© 2005-2011 Microchip Technology Inc. DS70157F-page 463
Section 6. Built-in Functions
Built-in Functions
6
__builtin_movsac
Description:
Computes nothing, but prefetches data ready for a future MAC operation.
xptr may be null to signify no X prefetch to be performed, in which case the values of xincr
and xval are ignored, but required.
yptr may be null to signify no Y prefetch to be performed, in which case the values of yincr
and yval are ignored, but required.
xval and yval nominate the address of a C variable where the prefetched value will be stored.
xincr and yincr may be the literal values: -6, -4, -2, 0, 2, 4, 6 or an integer value.
If AWB is not null, the other accumulator will be written back into the referenced variable.
For example:
register int result asm("A");
int *xmemory;
int *ymemory;
int xVal, yVal;
result = _ _builtin_movsac(&xmemory, &xVal, 2,
&ymemory, &yVal, 2, 0, 0);
May generate:
movsac A, [w8]+=2, w4, [w10]+=2, w5
Prototype:
int _ _builtin_movsac(
int **xptr, int *xval, int xincr,
int **yptr, int *yval, int yincr, int *AWB
int AWB_accum);
Argument:
xptr Integer pointer to pointer to x prefetch.
xval Integer pointer to value of x prefetch.
xincr Integer increment value of x prefetch.
yptr Integer pointer to pointer to y prefetch.
yval Integer pointer to value of y prefetch.
yincr Integer increment value of y prefetch.
AWB Accumulator write back location.
AWB_accum Accumulator to write back.
Note: The arguments xptr and yptr must point to the arrays located in the x data
memory and y data memory, respectively.
Return Value:
Returns prefetch data.
Assembler Operator / Machine Instruction:
movsac
Error Messages:
An error message appears if:
• the result is not an accumulator register
• xval is a null value but xptr is not null
• yval is a null value but yptr is not null
• AWB_accum is not an accumulator register and AWB is not null

- 1
- 2
…
- 461
- 462
- 463
- 464
- 465
…
- 501
- 502