.rept in asm

Hi!

I'm new on programming in assembly IN Arduino's C++.
I made some asm volatile part that works.
Long story short - I would like to use .rept instruction, but it causes compile to fail.
I've been looking for the solution for the long time, but couldn't find any.

Even simple test program failes:

void setup() {
  // put your setup code here, to run once:

}

void loop() {
  // put your main code here, to run repeatedly:
asm volatile(".rept 78\n\tNOP\n\t.endr");

}

with:

/opt/arduino-1.8.9/arduino-builder -dump-prefs -logger=machine -hardware /opt/arduino-1.8.9/hardware -hardware /home/san/Arduino/hardware -tools /opt/arduino-1.8.9/tools-builder -tools /opt/arduino-1.8.9/hardware/tools/avr -built-in-libraries /opt/arduino-1.8.9/libraries -libraries /home/san/Arduino/libraries -fqbn=arduino:avr:nano:cpu=atmega328old -ide-version=10809 -build-path /tmp/arduino_build_112192 -warnings=none -build-cache /tmp/arduino_cache_102946 -prefs=build.warn_data_percentage=75 -prefs=runtime.tools.arduinoOTA.path=/opt/arduino-1.8.9/hardware/tools/avr -prefs=runtime.tools.arduinoOTA-1.2.1.path=/opt/arduino-1.8.9/hardware/tools/avr -prefs=runtime.tools.avr-gcc.path=/opt/arduino-1.8.9/hardware/tools/avr -prefs=runtime.tools.avr-gcc-5.4.0-atmel3.6.1-arduino2.path=/opt/arduino-1.8.9/hardware/tools/avr -prefs=runtime.tools.avrdude.path=/opt/arduino-1.8.9/hardware/tools/avr -prefs=runtime.tools.avrdude-6.3.0-arduino14.path=/opt/arduino-1.8.9/hardware/tools/avr -verbose /home/san/Arduino/Szkice/Testy/repr_asm/repr_asm.ino
/opt/arduino-1.8.9/arduino-builder -compile -logger=machine -hardware /opt/arduino-1.8.9/hardware -hardware /home/san/Arduino/hardware -tools /opt/arduino-1.8.9/tools-builder -tools /opt/arduino-1.8.9/hardware/tools/avr -built-in-libraries /opt/arduino-1.8.9/libraries -libraries /home/san/Arduino/libraries -fqbn=arduino:avr:nano:cpu=atmega328old -ide-version=10809 -build-path /tmp/arduino_build_112192 -warnings=none -build-cache /tmp/arduino_cache_102946 -prefs=build.warn_data_percentage=75 -prefs=runtime.tools.arduinoOTA.path=/opt/arduino-1.8.9/hardware/tools/avr -prefs=runtime.tools.arduinoOTA-1.2.1.path=/opt/arduino-1.8.9/hardware/tools/avr -prefs=runtime.tools.avr-gcc.path=/opt/arduino-1.8.9/hardware/tools/avr -prefs=runtime.tools.avr-gcc-5.4.0-atmel3.6.1-arduino2.path=/opt/arduino-1.8.9/hardware/tools/avr -prefs=runtime.tools.avrdude.path=/opt/arduino-1.8.9/hardware/tools/avr -prefs=runtime.tools.avrdude-6.3.0-arduino14.path=/opt/arduino-1.8.9/hardware/tools/avr -verbose /home/san/Arduino/Szkice/Testy/repr_asm/repr_asm.ino
Using board 'nano' from platform in folder: /opt/arduino-1.8.9/hardware/arduino/avr
Using core 'arduino' from platform in folder: /opt/arduino-1.8.9/hardware/arduino/avr
Warning: Board breadboard:avr:atmega328bb doesn't define a 'build.board' preference. Auto-set to: AVR_ATMEGA328BB
Detecting libraries used...
/opt/arduino-1.8.9/hardware/tools/avr/bin/avr-g++ -c -g -Os -w -std=gnu++11 -fpermissive -fno-exceptions -ffunction-sections -fdata-sections -fno-threadsafe-statics -Wno-error=narrowing -flto -w -x c++ -E -CC -mmcu=atmega328p -DF_CPU=16000000L -DARDUINO=10809 -DARDUINO_AVR_NANO -DARDUINO_ARCH_AVR -I/opt/arduino-1.8.9/hardware/arduino/avr/cores/arduino -I/opt/arduino-1.8.9/hardware/arduino/avr/variants/eightanaloginputs /tmp/arduino_build_112192/sketch/repr_asm.ino.cpp -o /dev/null
Generating function prototypes...
/opt/arduino-1.8.9/hardware/tools/avr/bin/avr-g++ -c -g -Os -w -std=gnu++11 -fpermissive -fno-exceptions -ffunction-sections -fdata-sections -fno-threadsafe-statics -Wno-error=narrowing -flto -w -x c++ -E -CC -mmcu=atmega328p -DF_CPU=16000000L -DARDUINO=10809 -DARDUINO_AVR_NANO -DARDUINO_ARCH_AVR -I/opt/arduino-1.8.9/hardware/arduino/avr/cores/arduino -I/opt/arduino-1.8.9/hardware/arduino/avr/variants/eightanaloginputs /tmp/arduino_build_112192/sketch/repr_asm.ino.cpp -o /tmp/arduino_build_112192/preproc/ctags_target_for_gcc_minus_e.cpp
/opt/arduino-1.8.9/tools-builder/ctags/5.8-arduino11/ctags -u --language-force=c++ -f - --c++-kinds=svpf --fields=KSTtzns --line-directives /tmp/arduino_build_112192/preproc/ctags_target_for_gcc_minus_e.cpp
Kompilowanie szkicu...
/opt/arduino-1.8.9/hardware/tools/avr/bin/avr-g++ -c -g -Os -w -std=gnu++11 -fpermissive -fno-exceptions -ffunction-sections -fdata-sections -fno-threadsafe-statics -Wno-error=narrowing -MMD -flto -mmcu=atmega328p -DF_CPU=16000000L -DARDUINO=10809 -DARDUINO_AVR_NANO -DARDUINO_ARCH_AVR -I/opt/arduino-1.8.9/hardware/arduino/avr/cores/arduino -I/opt/arduino-1.8.9/hardware/arduino/avr/variants/eightanaloginputs /tmp/arduino_build_112192/sketch/repr_asm.ino.cpp -o /tmp/arduino_build_112192/sketch/repr_asm.ino.cpp.o
Compiling libraries...
Compiling core...
Using precompiled core: /tmp/arduino_cache_102946/core/core_arduino_avr_nano_cpu_atmega328old_779701d53dcab6cf48c409cb21b72ea8.a
Linking everything together...
/opt/arduino-1.8.9/hardware/tools/avr/bin/avr-gcc -w -Os -g -flto -fuse-linker-plugin -Wl,--gc-sections -mmcu=atmega328p -o /tmp/arduino_build_112192/repr_asm.ino.elf /tmp/arduino_build_112192/sketch/repr_asm.ino.cpp.o /tmp/arduino_build_112192/../arduino_cache_102946/core/core_arduino_avr_nano_cpu_atmega328old_779701d53dcab6cf48c409cb21b72ea8.a -L/tmp/arduino_build_112192 -lm
/tmp/cc6ec52u.ltrans0.ltrans.o: In function `main':
/opt/arduino-1.8.9/hardware/arduino/avr/cores/arduino/main.cpp:47:(.text.startup+0x128): relocation truncated to fit: R_AVR_7_PCREL against `no symbol'
collect2: error: ld returned 1 exit status
exit status 1
Błąd kompilacji dla płytki Arduino Nano.

One more observation:
.rept 62 DOES work, but 63 does NOT.

Whats going on?
Best regards!

.rept 62 DOES work, but 63 does NOT.

Too far for PC-relative branch?

It means for jump?
How to avoid it?

Try this out:

__asm__ __volatile__(
  ".macro NOPX  P                \n\t"
  ".rept &P                     \n\t"   // adjust the number here
  " NOP                         \n\t"
  ".endr                        \n\t"   // End of Repeat
  ".endm                        \n\t"   // End of macro
  );

void setup() {

}


void loop() {

__asm__ __volatile__("NOPX 66"); 
}
/opt/arduino-1.8.9/arduino-builder -dump-prefs -logger=machine -hardware /opt/arduino-1.8.9/hardware -hardware /home/san/Arduino/hardware -tools /opt/arduino-1.8.9/tools-builder -tools /opt/arduino-1.8.9/hardware/tools/avr -built-in-libraries /opt/arduino-1.8.9/libraries -libraries /home/san/Arduino/libraries -fqbn=arduino:avr:nano:cpu=atmega328old -ide-version=10809 -build-path /tmp/arduino_build_112192 -warnings=none -build-cache /tmp/arduino_cache_102946 -prefs=build.warn_data_percentage=75 -prefs=runtime.tools.arduinoOTA.path=/opt/arduino-1.8.9/hardware/tools/avr -prefs=runtime.tools.arduinoOTA-1.2.1.path=/opt/arduino-1.8.9/hardware/tools/avr -prefs=runtime.tools.avr-gcc.path=/opt/arduino-1.8.9/hardware/tools/avr -prefs=runtime.tools.avr-gcc-5.4.0-atmel3.6.1-arduino2.path=/opt/arduino-1.8.9/hardware/tools/avr -prefs=runtime.tools.avrdude.path=/opt/arduino-1.8.9/hardware/tools/avr -prefs=runtime.tools.avrdude-6.3.0-arduino14.path=/opt/arduino-1.8.9/hardware/tools/avr -verbose /home/san/Arduino/Szkice/Testy/repr_asm/repr_asm.ino
/opt/arduino-1.8.9/arduino-builder -compile -logger=machine -hardware /opt/arduino-1.8.9/hardware -hardware /home/san/Arduino/hardware -tools /opt/arduino-1.8.9/tools-builder -tools /opt/arduino-1.8.9/hardware/tools/avr -built-in-libraries /opt/arduino-1.8.9/libraries -libraries /home/san/Arduino/libraries -fqbn=arduino:avr:nano:cpu=atmega328old -ide-version=10809 -build-path /tmp/arduino_build_112192 -warnings=none -build-cache /tmp/arduino_cache_102946 -prefs=build.warn_data_percentage=75 -prefs=runtime.tools.arduinoOTA.path=/opt/arduino-1.8.9/hardware/tools/avr -prefs=runtime.tools.arduinoOTA-1.2.1.path=/opt/arduino-1.8.9/hardware/tools/avr -prefs=runtime.tools.avr-gcc.path=/opt/arduino-1.8.9/hardware/tools/avr -prefs=runtime.tools.avr-gcc-5.4.0-atmel3.6.1-arduino2.path=/opt/arduino-1.8.9/hardware/tools/avr -prefs=runtime.tools.avrdude.path=/opt/arduino-1.8.9/hardware/tools/avr -prefs=runtime.tools.avrdude-6.3.0-arduino14.path=/opt/arduino-1.8.9/hardware/tools/avr -verbose /home/san/Arduino/Szkice/Testy/repr_asm/repr_asm.ino
Using board 'nano' from platform in folder: /opt/arduino-1.8.9/hardware/arduino/avr
Using core 'arduino' from platform in folder: /opt/arduino-1.8.9/hardware/arduino/avr
Warning: Board breadboard:avr:atmega328bb doesn't define a 'build.board' preference. Auto-set to: AVR_ATMEGA328BB
Detecting libraries used...
/opt/arduino-1.8.9/hardware/tools/avr/bin/avr-g++ -c -g -Os -w -std=gnu++11 -fpermissive -fno-exceptions -ffunction-sections -fdata-sections -fno-threadsafe-statics -Wno-error=narrowing -flto -w -x c++ -E -CC -mmcu=atmega328p -DF_CPU=16000000L -DARDUINO=10809 -DARDUINO_AVR_NANO -DARDUINO_ARCH_AVR -I/opt/arduino-1.8.9/hardware/arduino/avr/cores/arduino -I/opt/arduino-1.8.9/hardware/arduino/avr/variants/eightanaloginputs /tmp/arduino_build_112192/sketch/repr_asm.ino.cpp -o /dev/null
Generating function prototypes...
/opt/arduino-1.8.9/hardware/tools/avr/bin/avr-g++ -c -g -Os -w -std=gnu++11 -fpermissive -fno-exceptions -ffunction-sections -fdata-sections -fno-threadsafe-statics -Wno-error=narrowing -flto -w -x c++ -E -CC -mmcu=atmega328p -DF_CPU=16000000L -DARDUINO=10809 -DARDUINO_AVR_NANO -DARDUINO_ARCH_AVR -I/opt/arduino-1.8.9/hardware/arduino/avr/cores/arduino -I/opt/arduino-1.8.9/hardware/arduino/avr/variants/eightanaloginputs /tmp/arduino_build_112192/sketch/repr_asm.ino.cpp -o /tmp/arduino_build_112192/preproc/ctags_target_for_gcc_minus_e.cpp
/opt/arduino-1.8.9/tools-builder/ctags/5.8-arduino11/ctags -u --language-force=c++ -f - --c++-kinds=svpf --fields=KSTtzns --line-directives /tmp/arduino_build_112192/preproc/ctags_target_for_gcc_minus_e.cpp
Kompilowanie szkicu...
/opt/arduino-1.8.9/hardware/tools/avr/bin/avr-g++ -c -g -Os -w -std=gnu++11 -fpermissive -fno-exceptions -ffunction-sections -fdata-sections -fno-threadsafe-statics -Wno-error=narrowing -MMD -flto -mmcu=atmega328p -DF_CPU=16000000L -DARDUINO=10809 -DARDUINO_AVR_NANO -DARDUINO_ARCH_AVR -I/opt/arduino-1.8.9/hardware/arduino/avr/cores/arduino -I/opt/arduino-1.8.9/hardware/arduino/avr/variants/eightanaloginputs /tmp/arduino_build_112192/sketch/repr_asm.ino.cpp -o /tmp/arduino_build_112192/sketch/repr_asm.ino.cpp.o
Compiling libraries...
Compiling core...
Using precompiled core: /tmp/arduino_cache_102946/core/core_arduino_avr_nano_cpu_atmega328old_779701d53dcab6cf48c409cb21b72ea8.a
Linking everything together...
/opt/arduino-1.8.9/hardware/tools/avr/bin/avr-gcc -w -Os -g -flto -fuse-linker-plugin -Wl,--gc-sections -mmcu=atmega328p -o /tmp/arduino_build_112192/repr_asm.ino.elf /tmp/arduino_build_112192/sketch/repr_asm.ino.cpp.o /tmp/arduino_build_112192/../arduino_cache_102946/core/core_arduino_avr_nano_cpu_atmega328old_779701d53dcab6cf48c409cb21b72ea8.a -L/tmp/arduino_build_112192 -lm
/tmp/ccxPVQWN.ltrans0.ltrans.o: In function `main':
/opt/arduino-1.8.9/hardware/arduino/avr/cores/arduino/main.cpp:47:(.text.startup+0x110): relocation truncated to fit: R_AVR_7_PCREL against `no symbol'
collect2: error: ld returned 1 exit status
exit status 1
Błąd kompilacji dla płytki Arduino Nano.