byte_access.c 2.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150
  1. #include "byte_access.h"
  2. // LSB first!
  3. //
  4. unsigned short int _usi(void *p)
  5. {
  6. unsigned short int usi = 0;
  7. unsigned char c;
  8. c = (unsigned char)(*((unsigned char *)p));
  9. usi |= c;
  10. c = (unsigned char)(*((unsigned char *)(p+1)));
  11. usi |= (c<<8);
  12. return usi;
  13. }
  14. unsigned long int _uli(void *p)
  15. {
  16. unsigned long int uli = 0;
  17. unsigned char c;
  18. c = (unsigned char)(*((unsigned char *)p));
  19. uli |= c;
  20. c = (unsigned char)(*((unsigned char *)(p+1)));
  21. uli |= (c<<8);
  22. c = (unsigned char)(*((unsigned char *)(p+2)));
  23. uli |= (c<<16);
  24. c = (unsigned char)(*((unsigned char *)(p+3)));
  25. uli |= (c<<24);
  26. return uli;
  27. }
  28. unsigned long long int _ulli(void *p)
  29. {
  30. unsigned long long int ulli = 0;
  31. unsigned long long int t;
  32. unsigned char c;
  33. c = (unsigned char)(*((unsigned char *)p));
  34. ulli |= c;
  35. c = (unsigned char)(*((unsigned char *)(p+1)));
  36. t = c;
  37. ulli |= (t<<8);
  38. c = (unsigned char)(*((unsigned char *)(p+2)));
  39. t = c;
  40. ulli |= (t<<16);
  41. c = (unsigned char)(*((unsigned char *)(p+3)));
  42. t = c;
  43. ulli |= (t<<24);
  44. c = (unsigned char)(*((unsigned char *)(p+4)));
  45. t = c;
  46. ulli |= (t<<32);
  47. c = (unsigned char)(*((unsigned char *)(p+5)));
  48. t = c;
  49. ulli |= (t<<40);
  50. c = (unsigned char)(*((unsigned char *)(p+6)));
  51. t = c;
  52. ulli |= (t<<48);
  53. c = (unsigned char)(*((unsigned char *)(p+7)));
  54. t = c;
  55. ulli |= (t<<56);
  56. return ulli;
  57. }
  58. void _usiw(void *p, unsigned short int usi)
  59. {
  60. unsigned char c;
  61. unsigned char *chp;
  62. chp = p;
  63. c = usi & 0xff;
  64. *chp++ = c;
  65. c = (usi >> 8) & 0xff;
  66. *chp++ = c;
  67. }
  68. void _uliw(void *p, unsigned long int uli)
  69. {
  70. unsigned char c;
  71. unsigned char *chp;
  72. chp = p;
  73. c = uli & 0xff;
  74. *chp++ = c;
  75. c = (uli >> 8) & 0xff;
  76. *chp++ = c;
  77. c = (uli >> 16) & 0xff;
  78. *chp++ = c;
  79. c = (uli >> 24) & 0xff;
  80. *chp++ = c;
  81. }
  82. void _ulliw(void *p, unsigned long long int ulli)
  83. {
  84. unsigned char c;
  85. unsigned char *chp;
  86. chp = p;
  87. c = ulli & 0xff;
  88. *chp++ = c;
  89. c = (ulli >> 8) & 0xff;
  90. *chp++ = c;
  91. c = (ulli >> 16) & 0xff;
  92. *chp++ = c;
  93. c = (ulli >> 24) & 0xff;
  94. *chp++ = c;
  95. c = (ulli >> 32) & 0xff;
  96. *chp++ = c;
  97. c = (ulli >> 40) & 0xff;
  98. *chp++ = c;
  99. c = (ulli >> 48) & 0xff;
  100. *chp++ = c;
  101. c = (ulli >> 56) & 0xff;
  102. *chp++ = c;
  103. }