В общем есть проект под Bloodshed Dev-C++ И таместь такой код который я не могу понять Код (Text): void gbz80_inc(byte* reg) { asm volatile ( "movl $0, %1\n" // load 0 to NFLAG "incb %2\n" "lahf\n" // get flags "andb $1,%%bh\n" // carry not affected "andb $0xFE,%%ah\n" "orb %%ah, %%bh \n" : "=b" (flags), "=g" (NFLAG), "=q" (*reg) : "2" (*reg), "0" (flags) : "cc", "ah"); } Не понятны следующие моменты 1) В функции есть аргумент byte* reg Где он дальше используется что-то я не пойму 2) Что это за строки такие : "=b" (flags), "=g" (NFLAG), "=q" (*reg) : "2" (*reg), "0" (flags) : "cc", "ah"); Что они делают не могу понять. В инете не нашел описания. Подскажите линк,плиз. 3) В Bloodshed Dev-C++ используется gcc и g++. ОРн понимает только at&t синтаксис или ещё и интел? 4) Тоже смамое но про MSVS. А понимает только intel или можно как то включить at&t? Спасибо.
: "=b" (flags), "=g" (NFLAG), "=q" (*reg) : "2" (*reg), "0" (flags) : "cc", "ah"); ничего я не понял по этому поводу
movl $0, %1\ "2" (*reg), "0" (flags Не понятно мне вот это. Что значит переслать 0 ? Куда что значит %1. "=b" (flags), "=g" (NFLAG), "=q" (*reg) что значит =b.Что за b или g. Сорри но у меня плохо с английским
В флагах gcc где-то было насчёт intel'овского синтаксиса. Может это позволяет использовать intel синтаксис в inline ассемблере. А может это только для работы вместе с опцией -S. Как куда, там же всё написано, в первый аргумент, то есть во flags. Эээ. Ты хочешь чтобы тебе перевели документацию?
Парни умоляю, ничего не понимаю, тупой я Расккажи те что всё этозначит. Подскажите как самому можно в интел синтаксис перевести. Скину 10 вебмани тому кто всё объяснит Плиз void gbz80_dec(byte* reg) { asm volatile ( "movl $1, %1\n" // load 1 to NFLAG "decb %2\n" "lahf\n" // get flags "andb $0x01,%%bh\n" // carry not affected "andb $0xFE,%%ah\n" "orb %%ah, %%bh \n" : "=b" (flags), "=g" (NFLAG), "=q" (*reg) : "2" (*reg), "0" (flags) : "cc", "ah"); } void gbz80_rlca() { asm volatile ( "xorb %%ah, %%ah\n" "movl $0, %1\n" // load 0 to NFLAG "rolb %2\n" "rclb %%ah\n" // only carry affected : "=a" (flags), "=g" (NFLAG), "=q" (A) : "2" (A) : "cc"); } : "=a" (flags), "=g" (NFLAG), "=q" (A) : "2" (A) : "cc"); Не понимаю что всё это значит что за =a =g =q cc AA