Exemple #1
0
uint32_t label_index(const label_map &lmap, const std::string &lbl)
{
	label_map::const_iterator it(lmap.find(lbl));
	if (it == lmap.end()) {
		cerr << "unknown label: " << lbl << endl;
		return -1;
	}
	return it->second;
}
 void add_code( perseus::detail::code_segment& out_code, const label_map& labels, const label_reference_offset& reference, Tail... tail )
 {
   auto pos = labels.find( reference.name );
   if( pos == labels.end() )
   {
     throw std::logic_error( "invalid label reference" );
   }
   out_code.push< std::uint32_t >( pos->second - out_code.size() - sizeof( std::uint32_t ) );
   add_code( out_code, labels, tail... );
 }