c: přetypování
Miroslav Draxal
evik na volny.cz
Neděle Leden 13 00:43:26 CET 2019
Dobrý den,
Řeším tady jeden podprogram, který je časově kritický.
typedef enum {
uint8_t value;
struct {
unsigned prvniBit :1;
unsigned druhyBit :1;
};
}_KontrolaDataResult_ ;
_KontrolaDataResult_ pokus(void){
// v podprogramu je cca 10x
_KontrolaDataResult_ KontrolaDataResult;
KontrolaDataResult.value = 0x19;
return KontrolaDataResult;
}
Pokud na to kouknu do asm, dost blbě to tam je optimalizovaný, optimalizace
všechny zapnutý
! _KontrolaDataResult_ KontrolaDataResult;
! KontrolaDataResult.value = 0x19;
0x7D2E: MOVLW 0x19
0x7D30: MOVWF KontrolaDataResult_2242, ACCESS
! return KontrolaDataResult;
0x7D32: MOVF KontrolaDataResult_2242, W, ACCESS
0x7D34: RETURN 0
prostě to nehodí klasicky
RETLW 0x19
Existuje nějaká možnost, jak to přetypovat? .. Nějak takhle, samozřejmě, že
tohle je totální blbost
return (_KontrolaDataResult_).value 0x19
Díky, Míra
------------- další část ---------------
HTML příloha byla odstraněna...
URL: <http://list.hw.cz/pipermail/hw-list/attachments/20190113/778afc1b/attachment.html>
Další informace o konferenci Hw-list