Module: Bindef::Extras::Int128

Included in:
Bindef
Defined in:
lib/bindef/extras/int128.rb

Overview

Potentially useful 128-bit integer emission commands.

Instance Method Summary collapse

Instance Method Details

#i128(num) ⇒ void

Note:

Uses the :endian Bindef#pragma

This method returns an undefined value.

Emits a __int128_t.

Parameters:

  • num (Integer)

    the number to emit



28
29
30
31
32
33
34
35
36
37
38
39
# File 'lib/bindef/extras/int128.rb', line 28

def i128(num)
  upper = num >> 64
  lower = num & (2**64 - 1)

  if pragmas[:endian] == big
    i64 upper
    u64 lower
  else
    u64 lower
    i64 upper
  end
end

#u128(num) ⇒ void

Note:

Uses the :endian Bindef#pragma

This method returns an undefined value.

Emits a __uint128_t.

Parameters:

  • num (Integer)

    the number to emit



11
12
13
14
15
16
17
18
19
20
21
22
# File 'lib/bindef/extras/int128.rb', line 11

def u128(num)
  upper = num >> 64
  lower = num & (2**64 - 1)

  if pragmas[:endian] == big
    u64 upper
    u64 lower
  else
    u64 lower
    u64 upper
  end
end