[elektro] C asm("NOP") makró
Miko, Imre
imre.miko at siemens.com
Thu Nov 27 10:40:16 CET 2014
Sziasztok,
A forditot azert jo lett volna megtudnunk, mert mindenhol mas megoldas van.
AVR-GCC:
__builtin_avr_delay_cycles(cycles)
AVR-I*R:
__delay_cycles(cycles)
PIC24/dsPIC GCC:
// delay constant number of cycles (cycles = 2...16385)
#define delay_cycles(cycles) ASM("repeat #%0 \n nop" :: "i" ((cycles)-2));
Udv,
Imre
-----Original Message-----
From: elektro-bounces at tesla.hu [mailto:elektro-bounces at tesla.hu] On Behalf Of Bali Zoltan
Sent: 26 November 2014 13:04
To: elektro at tesla.hu
Subject: Re: [elektro] C asm("NOP") makró
Akkor a hab már megvan, a tortát meg még farigcsálom hozzá :) .
Hálás köszönet.
Üdv. Zoli
Ui. egyébként most próbáltam a korábbiakat.
csak ez működik (asm lst-ben ellenőrízve):
#define _NOPx2 {asm("NOP");} {asm("NOP");}
2014.11.26. 12:38 keltezéssel, Andras Nagy írta:
> Szia,
>
> GCC-ben meg lehet csinálni
>
> legyen egy header fileod ami kb így néz ki:
>
> //====================================================================
> ======== // $Id: nopasmmacro.h 2014-06-17 23:32:08 andy $
> //====================================================================
> ========
>
> #ifndef _VARIABLE_NOP_ASM_MACRO_H_
> #define _VARIABLE_NOP_ASM_MACRO_H_
>
> #define __sx2(x) #x
> #define __sx1(x) __sx2(x)
>
> #define _NOP_N( x ) ({ asm("__VARIABLE_NOPS " __sx1(x) "\n"); })
>
> void __variable_nop_asm_macro(void)
> {
> asm(".macro __VARIABLE_NOPS, count, iter=1\n nop\n .if
> \\count-\\iter\n __VARIABLE_NOPS \\count,\"(\\iter+1)\"\n .endif\n
> .endm\n"); }
>
> #endif // _VARIABLE_NOP_ASM_MACRO_H_
>
>
>
> ahol bárhol akarod használni include-old be a forrás file elején
>
> és
>
> _NOP_N( 20 );
>
> vagy akár definiált konstansokkal is működik pl:
>
> #define NOPOK_SZAMA 8
>
> _NOP_N( NOPOK_SZAMA );
>
>
> Üdv,
> Andy
>
>
> Sent: Wednesday, November 26, 2014 at 10:24 AM
> From: "Bali Zoltán" <eltexto at freemail.hu>
> To: elektro at tesla.hu
> Subject: Re: [elektro] C asm("NOP") makró Ebből indultam ki én is, de
> a pontosvesszőre figyeltem, meg cifráztam is. Makródefben kihagytam,
> utásítás után raktam. Utána fordítva. De, majd mégegyszer megpróbálom,
> hátha megint benéztem valamit.
>
> Köszi
>
> Üdv. Zoli
>
> ----- Original Message -----
> From: "Lajos Rancz" <lajos.rancz at gmail.com>
> To: <elektro at tesla.hu>
> Sent: Wednesday, November 26, 2014 9:44 AM
> Subject: Re: [elektro] C asm("NOP") makró
>
>
>> Helló!
>>
>> Ha az asm("NOP"); működik akkor a makrónak is működnie kell. Nem
>> lehet, hogy nem tetted ki a ';' jelet?
>>
>> Üdv
>>
>> 2014. november 26. 7:40 Bali Zoltán írta, <eltexto at freemail.hu>:
>>
>>> Hali!
>>>
>>> Általában kerülöm a bonyolultabb makrókat, de most kellene ilyesmi,
>>> hogy NOPx10, ami 10 asm("NOP) utasításból állna.
>>> Gondoltam ez nem lehet bonyolult, de nem megy.
>>>
>>> Azt hittem legalább ez működik
>>> #define _NOP (asm("NOP"))
>>> Lehet a string zavarja, próbáltam
>>> függvény szerű makróval, de azzal sem jutottam eredményre.
>>>
>>> Van valakinek netán ötlete?
>>>
>>> Köszi
>>>
>>> Üdv. Zoli
>>> -----------------------------------------
>>> elektro[-flame|-etc]
>>>
>> -----------------------------------------
>> elektro[-flame|-etc]
> -----------------------------------------
> elektro[-flame|-etc]
> -----------------------------------------
> elektro[-flame|-etc]
-----------------------------------------
elektro[-flame|-etc]
More information about the Elektro
mailing list