Hello Alex.
12 Jul 04 23:24, you wrote to me:
AB>> ðÏÐÒÏÂÕÊ ÎÅ ÐÒÉÌÉÎËÏ×Ù×ÁÔØ ÆÁÊÌ, Á ÐÉÓÁÔØ ÎÁ ×ÓÔÒÏÅÎÎÏÍ ÁÓÍÅ. AB>> ïÎÏ,
AG> HÅ ÔÏÌØËÏ ÍÕÔÏpÎÏ, ÉÎÌÁÊÎ ÁÓÍ ÜÔÏ ÐÏÌÎÙÊ ÐÜ - ÍÏÅÇÏ ÔÅpÐÅÎÉÑ È×ÁÔÁÅÔ AG> ÎÁ ÎÅÞÔÏ ÔÉÐÁ ÐÏÄÅpÇÁÔØ, ÐÏÍÉÇÁÔØ, ÂÉÔÉËÉ - ÃÉËÌÉËÉ... åÓÔØ ÎÏpÍÁÌØÎÙÊ AG> ÐpÑÍÏÊ ÁÓÓÅÍÂÌÅp.
üÔÏ ÔÏÔ ÖÅ ÓÁÍÙÊ ÁÓÓÅÍÂÌÅÒ. ÓÓ1 ÐÒÏÐÕÓËÁÅÔ ÔÏ, ÞÔÏ ÎÁÐÉÓÁÎÏ × asm("") ÎÁ ×ÙÈÏÄ, ËÏÔÏÒÙÊ ÔÒÁÎÓÌÉÒÕÅÔÓÑ avr-as
AB>> ËÏÎÅÞÎÏ, ÍÕÔÏÒÎÏ, ÎÏ ÇÉÂËÏ. ðÏ ËÒÁÊÎÅÊ ÍÅÒÅ, ÅÓÔØ ×ÏÚÍÏÖÎÏÓÔØ AB>> ÕËÁÚÁÔØ ËÁËÉÅ ÒÅÇÉÓÔÒÙ ÉÓÐÏÌØÚÕÀÔÓÑ AG> ÁÇÁÝÁÓ, ÐpÑÍÏ ÕËÁÚÙ×ÁÔØ ÓÔÁpÛÉÅ pÅÇÉÓÔpÙ ÐpÏÂÏ×ÁÌ? ×ÏÔ ÔÉÐÁ ÔÁË: AG> register unsigned char kewl_index asm ("r28"); ðÏÐpÏÂÕÊ. òÁÓÓËÁÖÅÛØ AG> ÐÏÔÏÍ ËÁË ÓÄÅÌÁÌ.
ôÁË ÎÅ ÐÒÏÂÏ×ÁÌ. ôÁËÏÊ ËÏÄ ÇÌÀÞÉÔ Ó ÐÒÅÒÙ×ÁÎÉÑÍÉ.
ñ ÉÍÅÌ ×ÉÄÕ ÔÁË, ÎÁÐÒÉÍÅÒ, ËÁË ÎÁÐÉÓÁÎÏ × ÍÁËÒÏÓÅ __ELPM_enhanced__
#define __ELPM_enhanced__(addr) \ ({ \ uint32_t __addr32 = (uint32_t)(addr); \ uint8_t __result; \ __asm__ \ ( \ "out %2, %C1" "\n\t" \ "movw r30, %1" "\n\t" \ "elpm %0, Z+" "\n\t" \ : "=r" (__result) \ : "r" (__addr32), \ "I" (_SFR_IO_ADDR(RAMPZ)) \ : "r30", "r31" \ ); \ __result; \ })
ëÓÔÁÔÉ, ÍÏÖÅÛØ ÐÏÐÒÏÂÏ×ÁÔØ ÐÒÉÌÉÎËÏ×ÁÔØ ÆÕÎËÃÉÀ, Á ×ÙÚÏ× ÅÅ ÏÆÏÒÍÉÔØ ÎÁ ×ÓÔÒÏÅÎÎÏÍ ÁÓÍÅ, ÇÄÅ ÐÅÒÅÞÉÓÌÉÔØ ÉÓÐÏÌØÚÕÅÍÙÅ Ô×ÏÅÊ ÆÕÎËÃÉÅÊ ÒÅÇÉÓÔÒÙ.
asm ( "call myfunc" "\n\t" : : : "r1" "r2" "ÐÒÏÞÉÅ ÎÕÖÎÙÅ ÒÅÇÉÓÔÒÙ" )
Alexey