Учитывая этот вопрос: как писать встроенные коды сборки о LOOP в Xcode LLVM?
На что отвечает следующий встроенный ассемблерный код:
void brighten_neon(unsigned char* src, unsigned char* dst, int numPixels, int intensity) {
asm volatile (
"\t mov r4, #0\n"
"\t vdup.8 d1, %3\n"
"Lloop2:\n"
"\t cmp r4, %2\n"
"\t bge Lend2\n"
"\t vld1.8 d0, [%0]!\n"
"\t vqadd.s8 d0, d0, d1\n"
"\t vst1.8 d0, [%1]!\n"
"\t add r4, r4, #8\n"
"\t b Lloop2\n"
"Lend2:\n"
: "=r"(src), "=r"(dst), "=r"(numPixels), "=r"(intensity)
: "0"(src), "1"(dst), "2"(numPixels), "3"(intensity)
: "cc", "r4", "d1", "d0");
}
Мне было интересно, что означают три последние строки в коде сборки? Кажется, что параметры определены здесь с именами регистров и т. д., которые используются встроенными. Может ли кто-нибудь уточнить это? Кто-нибудь знает какие-нибудь хорошие ресурсы, объясняющие это?