[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