1
//! \file
2
/*
3
**  Copyright (C) - Triton
4
**
5
**  This program is under the terms of the Apache License 2.0.
6
*/
7

8
#include <triton/coreUtils.hpp>
9
#include <triton/cpuSize.hpp>
10

11

12

13
/*
14
 * Note: We must use generic methods to deal with big int and arrays.
15
 */
16

17
namespace triton {
18
  namespace utils {
19

20 1
    void fromUintToBuffer(triton::uint128 value, triton::uint8* buffer) {
21 1
      for (triton::uint32 i = 0; i < triton::size::dqword; i++) {
22 1
        buffer[i] = (value & 0xff).convert_to<triton::uint8>();
23 1
        value >>= triton::bitsize::byte;
24
      }
25
    }
26

27

28 1
    void fromUintToBuffer(triton::uint256 value, triton::uint8* buffer) {
29 1
      for (triton::uint32 i = 0; i < triton::size::qqword; i++) {
30 1
        buffer[i] = (value & 0xff).convert_to<triton::uint8>();
31 1
        value >>= triton::bitsize::byte;
32
      }
33
    }
34

35

36 1
    void fromUintToBuffer(triton::uint512 value, triton::uint8* buffer) {
37 1
      for (triton::uint32 i = 0; i < triton::size::dqqword; i++) {
38 1
        buffer[i] = (value & 0xff).convert_to<triton::uint8>();
39 1
        value >>= triton::bitsize::byte;
40
      }
41
    }
42

43

44 1
    template <> triton::uint128 fromBufferToUint<>(const triton::uint8* buffer) {
45 1
      triton::uint128 value = 0;
46 1
      for (triton::sint32 i = triton::size::dqword-1; i >= 0; i--)
47 1
        value = ((value << triton::bitsize::byte) | buffer[i]);
48 1
      return value;
49
    }
50

51

52 1
    template <> triton::uint256 fromBufferToUint<>(const triton::uint8* buffer) {
53 1
      triton::uint256 value = 0;
54 1
      for (triton::sint32 i = triton::size::qqword-1; i >= 0; i--)
55 1
        value = ((value << triton::bitsize::byte) | buffer[i]);
56 1
      return value;
57
    }
58

59

60 1
    template <> triton::uint512 fromBufferToUint<>(const triton::uint8* buffer) {
61 1
      triton::uint512 value = 0;
62 1
      for (triton::sint32 i = triton::size::dqqword-1; i >= 0; i--)
63 1
        value = ((value << triton::bitsize::byte) | buffer[i]);
64 1
      return value;
65
    }
66

67
  }; /* utils namespace */
68 1
}; /* triton namespace */

Read our documentation on viewing source code .

Loading