Skip to content

Instantly share code, notes, and snippets.

@stryku
Last active March 26, 2017 19:01
Show Gist options
  • Save stryku/6a7aab67e1f27fbdc9be5506bb049900 to your computer and use it in GitHub Desktop.
Save stryku/6a7aab67e1f27fbdc9be5506bb049900 to your computer and use it in GitHub Desktop.
template <size_t current_ip, typename current_token, typename ...rest_of_tokens, typename ...result_tokens, typename result_labels>
struct extract_labels_impl<
tuple<current_token, rest_of_tokens...>,
current_ip,
tuple<result_tokens...>,
result_labels>
{
using instruction = instruction_match<tuple<current_token, rest_of_tokens...>>;
using next_tokens = tuple_merge<tuple<result_tokens...>, typename instruction::instruction_tokens>;
static constexpr auto nex_ip = current_ip + instruction::eip_change;
using extracted = extract_labels_impl<
typename instruction::rest_of_tokens_t,
nex_ip,
next_tokens,
result_labels>;
using tokens = typename extracted::tokens;
using labels = typename extracted::labels;
};
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment