Sistemato assembling di LODI,LODR,STRI,STRR

This commit is contained in:
Giulio De Pasquale 2017-05-25 16:43:56 +02:00
parent 6f9e7db4ee
commit a6475f3500
2 changed files with 7 additions and 3 deletions

View File

@ -425,7 +425,7 @@ op_names = [["MOVI", "imm2reg"],
["MOVR", "reg2reg"], ["MOVR", "reg2reg"],
["LODI", "imm2reg"], ["LODI", "imm2reg"],
["LODR", "reg2reg"], ["LODR", "reg2reg"],
["STRI", "imm2reg"], ["STRI", "reg2imm"],
["STRR", "reg2reg"], ["STRR", "reg2reg"],
["ADDI", "imm2reg"], ["ADDI", "imm2reg"],
["ADDR", "reg2reg"], ["ADDR", "reg2reg"],
@ -489,7 +489,7 @@ alpha_re = re.compile("^[a-zA-Z]*$")
register_re = re.compile("(^[rRsS][0-4]$)|([iIrRsS][pP]$)") register_re = re.compile("(^[rRsS][0-4]$)|([iIrRsS][pP]$)")
label_re = re.compile("^([a-zA-Z]+)\:(?:\ *\#.*)?$") label_re = re.compile("^([a-zA-Z]+)\:(?:\ *\#.*)?$")
symcall_re = re.compile("^(?:[jJ][pPmM][pPaAbBeEnN][iIrR]|(?:[cC][aA][lL]{2}))\ +([\w]+)(?:\ *\#.*)?$") symcall_re = re.compile("^(?:[jJ][pPmM][pPaAbBeEnN][iIrR]|(?:[cC][aA][lL]{2}))\ +([\w]+)(?:\ *\#.*)?$")
commentline_re = re.compile("^\ *\#.*")
def main(): def main():
if len(sys.argv) < 4: if len(sys.argv) < 4:
@ -499,7 +499,7 @@ def main():
with open(sys.argv[2], 'r') as f: with open(sys.argv[2], 'r') as f:
filedata = f.readlines() filedata = f.readlines()
filedata = [x.strip() for x in filedata if x.strip()] filedata = [x.strip() for x in filedata if x.strip() and not commentline_re.match(x)]
vma = VMAssembler(sys.argv[1], filedata) vma = VMAssembler(sys.argv[1], filedata)
print(vma.functions) print(vma.functions)

View File

@ -11,11 +11,15 @@ void encrypt(uint16_t *v) {
uint16_t k1 = 0x7065; // "pe" uint16_t k1 = 0x7065; // "pe"
uint16_t k2 = 0x7275; // "ru" uint16_t k2 = 0x7275; // "ru"
uint16_t k3 = 0x6e73; // "ns" uint16_t k3 = 0x6e73; // "ns"
printf("v0: 0x%x, v1: 0x%x\n", v0, v1);
for (i = 0; i < 128; i++) { for (i = 0; i < 128; i++) {
sum += delta; sum += delta;
v0 += ((v1 << 4) + k0) ^ (v1 + sum) ^ ((v1 >> 5) + k1); v0 += ((v1 << 4) + k0) ^ (v1 + sum) ^ ((v1 >> 5) + k1);
v1 += ((v0 << 4) + k2) ^ (v0 + sum) ^ ((v0 >> 5) + k3); v1 += ((v0 << 4) + k2) ^ (v0 + sum) ^ ((v0 >> 5) + k3);
printf("Intermediate v0: 0x%x | v1: 0x%x\n", v0, v1);
} }
printf("SUM: 0x%x\n", sum);
printf("v0: 0x%x, v1: 0x%x\n", v0, v1);
v[0] = v0; v[0] = v0;
v[1] = v1; v[1] = v1;
} }