__LPM_enhanced__()

概要

_LPM_enhanced_()は、指定したアドレス(PROGMEM領域)に格納されているデータを1バイト読み取るためのアセンブラコードです。

ソースコード

_LPM_enhanced_()は、hardware/tools/avr/avr/include/avr/pgmspace.h に定義されています。以下に全ソースコードを示します。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
#define __LPM_enhanced__(addr)  \
(__extension__({                \
    uint16_t __addr16 = (uint16_t)(addr); \
    uint8_t __result;           \
    __asm__ __volatile__        \
    (                           \
        "lpm %0, Z" "\n\t"      \
        : "=r" (__result)       \
        : "z" (__addr16)        \
    );                          \
    __result;                   \
}))

lpmは、PROGMEM領域のデータを1バイト読み出すための命令です。Load Program Memoryの略です。addrにあるデータを__resultに代入して返却します。

バージョン

7.3.0-atmel3.6.1-arduino7

最終更新日

May 15, 2021

inserted by FC2 system