当前位置: 首页>>代码示例>>C++>>正文


C++ Constant::get_value方法代码示例

本文整理汇总了C++中Constant::get_value方法的典型用法代码示例。如果您正苦于以下问题:C++ Constant::get_value方法的具体用法?C++ Constant::get_value怎么用?C++ Constant::get_value使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在Constant的用法示例。


在下文中一共展示了Constant::get_value方法的2个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。

示例1: inc_array_size

void Variable::inc_array_size(BaseExpression* dim_size){
	if(size==NULL) size = new vector<int>;
	
	dereference_level++;

	if(dim_size==NULL){
		size->push_back(0);
		return;
	} 

	BaseExpression* tmp_expr=NULL;
	try{
		tmp_expr = dim_size->simplify();
		if(tmp_expr!=NULL){
			delete dim_size;
			dim_size = tmp_expr; 		
			if(tmp_expr->get_expr_type()!=EXPR_constant) generate_error("Variable size array not allowed");
		}
		Constant<uint64_t>* value = static_cast<Constant<uint64_t>*>(dim_size);		
		size->push_back((int)value->get_value());
	}
	catch(const int& exception_in){
		generate_error("Invalid array dimensions size");
	}
}
开发者ID:nikonikolov,项目名称:c_compiler,代码行数:25,代码来源:Variable.cpp

示例2: renderasm_global

void Variable::renderasm_global(ASMhandle& context){
	if(debug) cerr<<"Variable: renderasm_global start"<<endl;
	
	global=true;
	try{
		pair<string, Variable*> tmp(string(name), this);
		context.insert_global_var(tmp);
	}
	catch(const ErrorgenT& error_in){
		if(error_in == ERROR_redefinition) generate_error("Redefinition of global variable \""+string(name)+"\"");
		if(error_in == ERROR_fn_var_clash) generate_error("\""+string(name)+"\" redeclared as different kind of symbol");
	}

	if(debug) cerr<<"Variable: renderasm_global(): variable inserted in ASMhandle"<<endl;

	if(init_val!=NULL){
		// Try to optimize the expression if not already a Constant
		simplify_init_val();
		if(init_val->get_expr_type()!=EXPR_constant) generate_error("Initializer for global variable not constant");
		if(debug) cerr<<"Variable: renderasm_global() : initializer expression optimized"<<endl;
	}

	assembler.push_back(ss<<pad<<".globl"<<name<<endl);
	if(first_global){
		first_global=false;
		assembler.push_back(ss<<pad<<".data"<<endl);
	}
	
	assembler.push_back(ss<<pad<<".align"<<2<<endl);
	assembler.push_back(ss<<pad<<".type"<<name<<", @object"<<endl);
	assembler.push_back(ss<<pad<<".size"<<name<<", 4"<<endl);
	assembler.push_back(ss<<name<<":"<<endl);
	if(init_val!=NULL && init_val->get_expr_type()==EXPR_constant){
		Constant<uint64_t> *value = static_cast<Constant<uint64_t>*>(init_val);		
		assembler.push_back(ss<<pad<<".word"<<value->get_value()<<endl);
	} 
	assembler.push_back(ss<<endl);

	if(debug) cerr<<"Variable: renderasm_global successful"<<endl;
}
开发者ID:nikonikolov,项目名称:c_compiler,代码行数:40,代码来源:Variable.cpp


注:本文中的Constant::get_value方法示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。