示例#1
0
文件: lab2a.c 项目: vucu/CS111
/***** Worker thread *****/
void* worker(void* arg)
{
	int iter = *((int*)arg);
	for (int i=0;i<iter;i++)
	{
		if (sync_m)
		{
			add_m(&counter,1);
			add_m(&counter,-1);			
		}
		else if (sync_s)
		{
			add_s(&counter,1);
			add_s(&counter,-1);				
		}
		else if (sync_c)
		{
			add_c(&counter,1);
			add_c(&counter,-1);				
		}
		else
		{
			add(&counter,1);
			add(&counter,-1);
		}
	}
}
extern "C" ENCODER_DECLARE_EXPORT char * encoder_mem(Mnemonic m, OpndSize size,
               int disp, int base_reg, bool isBasePhysical, char * stream) {
    EncoderBase::Operands args;
    add_m(args, base_reg, disp, size);
    char* stream_start = stream;
    stream = (char *)EncoderBase::encode(stream, m, args);
#ifdef PRINT_ENCODER_STREAM
    printEncoderInst(m, args);
    decodeThenPrint(stream_start);
#endif
    return stream;
}
extern "C" ENCODER_DECLARE_EXPORT char * encoder_mem_fp(Mnemonic m, OpndSize size,
                  int disp, int base_reg, bool isBasePhysical,
                  int reg, char * stream) {
    EncoderBase::Operands args;
    // a fake FP register as operand
    add_fp(args, reg, size == OpndSize_64/*is_double*/);
    add_m(args, base_reg, disp, size);
    char* stream_start = stream;
    stream = (char *)EncoderBase::encode(stream, m, args);
#ifdef PRINT_ENCODER_STREAM
    printEncoderInst(m, args);
    decodeThenPrint(stream_start);
#endif
    return stream;
}
示例#4
0
void Date::add_d() {
    if (++dy >= current_dpm()) {
        dy = 0;
        add_m();
    }
}