IAR Вопрос про макрос

Programs, sources, embedded, demomaking, whatsoever related to subj :)

Postby DimkaM » 18 Dec 2012, 04:09

BIG_ENDIAN и LITTLE_ENDIAN
Мозги чёйта замёрзли походу. Какие два из четырёх применимы к з80?
Last edited by DimkaM on 18 Dec 2012, 04:33, edited 1 time in total.
N>"Идите нахуй" со своей политикой...
DimkaM
 
Posts: 1011
Joined: 24 Mar 2010, 12:42
Location: г.Щёлково М.О.
Group: Registered users

Postby DimkaM » 18 Dec 2012, 04:29

контики:
Code: Select all
#ifndef UIP_HTONS
#   if UIP_BYTE_ORDER == UIP_BIG_ENDIAN
#      define UIP_HTONS(n) (n)
#      define UIP_HTONL(n) (n)
#   else /* UIP_BYTE_ORDER == UIP_BIG_ENDIAN */
#      define UIP_HTONS(n) (uint16_t)((((uint16_t) (n)) << 8) | (((uint16_t) (n)) >> 8))
#      define UIP_HTONL(n) (((uint32_t)UIP_HTONS(n) << 16) | UIP_HTONS((uint32_t)(n) >> 16))
#   endif /* UIP_BYTE_ORDER == UIP_BIG_ENDIAN */
#else
#error "UIP_HTONS already defined!"
#endif /* UIP_HTONS
дрова визнета
Code: Select all
u_short swaps(u_int i)
{
   u_short ret=0;
   ret = (i & 0xFF) << 8;
   ret |= ((i >> 8)& 0xFF);
   return ret;   
}

u_long swapl(u_long l)
{
   u_long ret=0;
   ret = (l & 0xFF) << 24;
   ret |= ((l >> 8) & 0xFF) << 16;
   ret |= ((l >> 16) & 0xFF) << 8;
   ret |= ((l >> 24) & 0xFF);
   return ret;
}

/**
@brief   htons function converts a unsigned short from host to TCP/IP network byte order (which is big-endian).
@return    the value in TCP/IP network byte order
*/
unsigned short htons(
   unsigned short hostshort   /**< A 16-bit number in host byte order.  */
   )
{
#if ( SYSTEM_ENDIAN == _ENDIAN_LITTLE_ )
   return swaps(hostshort);
#else
   return hostshort;
#endif      
}


/**
@brief   htonl function converts a unsigned long from host to TCP/IP network byte order (which is big-endian).
@return    the value in TCP/IP network byte order
*/
unsigned long htonl(
   unsigned long hostlong      /**< hostshort  - A 32-bit number in host byte order.  */
   )
{
#if ( SYSTEM_ENDIAN == _ENDIAN_LITTLE_ )
   return swapl(hostlong);
#else
   return hostlong;
#endif   
}
N>"Идите нахуй" со своей политикой...
DimkaM
 
Posts: 1011
Joined: 24 Mar 2010, 12:42
Location: г.Щёлково М.О.
Group: Registered users

Postby DimkaM » 18 Dec 2012, 04:54

ага.
Разобрался.
Всегда бигендиан дефайнил - визнет робил. а тут чёрт дёрнул на вики залезть, они там расписали хер проссышь чего, запутался ещё больше
N>"Идите нахуй" со своей политикой...
DimkaM
 
Posts: 1011
Joined: 24 Mar 2010, 12:42
Location: г.Щёлково М.О.
Group: Registered users

Postby deathsoft » 18 Dec 2012, 16:15

DimkaM wrote:Какие два из четырёх применимы к з80?

Ясно дело, что LITTLE_ENDIAN, т.к. клон интела.
User avatar
deathsoft
 
Posts: 4744
Joined: 07 Apr 2007, 00:58
Group: Registered users

Postby DimkaM » 21 Dec 2012, 08:53

deathsoft wrote: LITTLE_ENDIAN

судя по процедурам, да.
но логически сообразить немогу.
вроде литлендиан, значит младший в конце. а у з80 младший в начале, если расположение в памяти имеется ввиду.
Оно мне похер, лижбы работало, но покоя недаёт
N>"Идите нахуй" со своей политикой...
DimkaM
 
Posts: 1011
Joined: 24 Mar 2010, 12:42
Location: г.Щёлково М.О.
Group: Registered users

Postby deathsoft » 21 Dec 2012, 16:55

DimkaM wrote:вроде литлендиан, значит младший в конце

Читать до полного просветления Порядок байтов
User avatar
deathsoft
 
Posts: 4744
Joined: 07 Apr 2007, 00:58
Group: Registered users

Postby DimkaM » 22 Dec 2012, 04:57

deathsoft wrote:Читать до полного просветления Порядок байтов

просветлился.
little-endian, дословно: «остроконечный»
а я оное пословно переводил. английский в школе прогуливал обычно
N>"Идите нахуй" со своей политикой...
DimkaM
 
Posts: 1011
Joined: 24 Mar 2010, 12:42
Location: г.Щёлково М.О.
Group: Registered users

Postby deathsoft » 22 Dec 2012, 09:32

DimkaM wrote:а я оное пословно переводил

Ну какбэ литтл - это маленький, а биг - большой, что какбэ не двусмысленно намекает какой байт лежит первым.
User avatar
deathsoft
 
Posts: 4744
Joined: 07 Apr 2007, 00:58
Group: Registered users

Postby lvd » 22 Dec 2012, 17:43

deathsoft wrote:Ну какбэ литтл - это маленький, а биг - большой, что какбэ не двусмысленно намекает какой байт лежит первым.

А эндиан какбы намекает, о каком именно байте речь.
F̞͖̭̿̔ͯu̐̅cͬ̑ͩk̨̤̳͇̮̭̪̠̽̿̓̆ͭͩ ̷̩̰͎̩͓̘̾̀ͬ̊ͭ͛ͅda̝̺͙̬͎̝̾͟ ̰̜̝̯͉̯̖̓̎́ͨ̽ͫ͟f̟͇̭̀ͬͨͭ̐̚u̹̼̹̗̞͑̔͂͐̚cͭ̅̊̆̒̆ǩ̝̩̯́ͥ̔̍̑ḭ͓͍̳̬ͦ̽͂n͍͎͈̈̅ͩͬ ̊ͫ̂̾̑̈́f̲͚͉͓͗̋́ͧͦ̅ȗ͇̲̻͈̲̅̎͗͒ͭ͡c̬̟̠̹̯̈́ͩ͘ͅk̫̠̻̋͜a̲͒̾̇!͙͕̺͉̗̩̲̂̏̄̀
User avatar
lvd
 
Posts: 7262
Joined: 07 Apr 2007, 21:28
Group: Registered users

Postby TS-Labs » 22 Dec 2012, 22:07

DimkaM wrote:английский в школе прогуливал обычно

И программирование ))
TS-Labs
 
Posts: 1150
Joined: 19 Apr 2010, 10:10
Location: Wildest West
Group: Registered users

PreviousNext

Return to Coding

Who is online

Users browsing this forum: No registered users and 11 guests

cron