添加一些cpu操作

This commit is contained in:
ranchuan
2024-12-04 11:39:53 +08:00
parent 7c97a9595e
commit 5e072f0380
3 changed files with 193 additions and 35 deletions

View File

@@ -135,7 +135,6 @@ class file(object):
self.unname_union_index=0
self.unname_enum_index=0
self.cpu=cpu(0x1000_0000,1*1024*1024,0x2000_0000,1*1024*1024)
self.cpu_mem_ptr=0x2000_0000
self.stack:list[variable]=[]
def variable_type_check(self,attr:list[str]):
for item in self.variable_type_list:
@@ -213,18 +212,18 @@ class file(object):
if(len(attr)==1):
for item in self.variable_type_alias:
if(item.alias==attr[0]):
self.stack.append(variable(name,item.attr,self.cpu_mem_ptr))
self.cpu_mem_ptr+=item.attr.get_size()
addr=self.cpu.create_var(item.attr.get_size())
self.stack.append(variable(name,item.attr,addr))
return
for item in self.variable_type_list:
if(item.eq(attr)):
self.stack.append(variable(name,item,self.cpu_mem_ptr))
self.cpu_mem_ptr+=item.get_size()
def modify_variable(self,name:str,value):
addr=self.cpu.create_var(item.get_size())
self.stack.append(variable(name,item,addr))
def set_variable(self,name:str,value,member_stack:list[str]=[]):
for item in self.stack:
if(item.name==name):
addr,size=item.value()
cpu.set_value(addr,size,value)
addr,size=item.member_value(member_stack)
self.cpu.set_value(addr,size,value)
return
raise Exception(f"符号名称不存在 {name}")
def get_variable(self,name:str,member_stack:list[str]=[]):
@@ -232,7 +231,7 @@ class file(object):
if(item.name==name):
addr,size=item.member_value(member_stack)
print(f"addr={addr},size={size}")
return
return self.cpu.get_value(addr,size)
def __str__(self) -> str:
ret=string()