本文整理汇总了Python中register.Register.get_len方法的典型用法代码示例。如果您正苦于以下问题:Python Register.get_len方法的具体用法?Python Register.get_len怎么用?Python Register.get_len使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类register.Register
的用法示例。
在下文中一共展示了Register.get_len方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Python代码示例。
示例1: __init__
# 需要导入模块: from register import Register [as 别名]
# 或者: from register.Register import get_len [as 别名]
class Step2:
##constructor de la clase se inicializan los codigos de operacion
def __init__(self):
self.operations = {
'ADD':'18','ADDF':'58','ADDR':'90','AND':'40','CLEAR':'B4','COMP':'28',
'COMPF':'88','DIV':'24','COMPR':'A0','DIVF':'64','DIVR':'9C','FIX':'C4',
'FLOAT':'C0','HIO':'F4','J':'3C','JEQ':'30','JGT':'34','JLT':'38',
'JSUB':'48','LDA':'00','LDB':'68','LDCH':'50','LDF':'70','LDL':'08','LDS':'6C',
'LDT':'74','LDX':'04','LPS':'D0','MUL':'20','MULF':'60','MULR':'98','NORM':'C8',
'OR':'44','RD':'D8','RMO':'AC','RSUB':'4C','SHIFTL':'A4','SHIFTR':'A8','SIO':'F0',
'SSK':'EC','STA':'0C','STB':'78','STCH':'54','STF':'80','STI':'D4',
'STL':'14','STS':'7C','STSW':'E8','STT':'84','STX':'10',
'SUB':'1C','SUBF':'5C','SUBR':'94','SVC':'B0','TD':'E0','TIO':'F8','TIX':'2C',
'TIXR':'B8','WD':'DC'
}
self.d = Displacement()
self.list_registers_h = []
self.list_registers = []
self.list_registers_m = []
self.list_registers_r = []
self.list_registers_e = []
self.current_register = Register("T")
self.registers = {"A":"0","X":"1","L":"2","CP":"8","SW":"9","B":"3","S":"4","T":"5","F":"6"}
self.base = "1038H"
self.m_register = []
self.m_modif_register = []
self.h_name = ""
self.list_registers_d = []
self.list_word_m = []
self.list_op_m = []
## inserta una cadena de bytes en el registro T actual si no cabe genera
#otro registro nuevo para almacenar los datos
# @param str cadena que contiene la serie de bytes
# @param dir direccion donde se encontro la instruccion
def insert_str(self,str,dir):
if self.current_register.get_len() == 0:
self.current_register.init_dir = dir
self.current_register.instert_string(str)
print "nuevo",str,dir
else:
if self.current_register.fits_in(str):
self.current_register.instert_string(str)
print "agrega",str,dir
else:
self.complete_register()
self.insert_str(str,dir)
## termina el registro actual T y genera uno nuevo
def complete_register(self):
if not self.current_register.get_len()==0:
register_t = self.current_register.make_T()
self.list_registers.append(register_t)
self.current_register = Register("T")
## regresa el registro m de los elementos externos que se
# encontraron en un codigo de expresion
def get_m_register_op(self):
list_ret = []
hexa = Hexadecimal()
self.elimina_repetidos(self.list_op_m)
for it in self.list_op_m:
reg = "M"
val = hexa.plus(it[3],"1H")
reg += self.current_register.adjust_bytes(val,6,False)
reg += "05"
reg += it[2]
if it[1] == "_":
name = self.current_register.adjust_name(it[0])
else:
name = self.current_register.adjust_name(self.h_name)
reg += name
list_ret.append(reg)
return list_ret
## elimina los registros m repetidos en una lista especificada
# este metodo elimina los registros relativos con signo contrario y que se encuentran
#en la misma direccion
def elimina_repetidos(self,list_r):
it = 0
re = 0
while it < len(list_r):
re = it + 1
eliminado = False
while re < len(list_r) and not eliminado:
if list_r[it][3] == list_r[re][3]:#direccion
if not list_r[it][2] == list_r[re][2]:#signos
if list_r[it][1] == "_" and list_r[re][1] == "_":
if list_r[it][0] == list_r[re][0]:#nombre
eliminado = True
elif list_r[it][1] == "relativo" and list_r[re][1] == "relativo":
eliminado = True
if not eliminado:
re += 1
if eliminado:
list_r.remove(list_r[re])
list_r.remove(list_r[it])
else:
it += 1
## regresa el registro m de los elementos externos que se
# encontraron en una directiva word
#.........这里部分代码省略.........