对汇编语言比较了解的大佬或者童鞋可以来看看!!!求助
求助!!!有关汇编的知识,应该也不是太难的东西,但我大一的时候学的不好,现在回来补充! 2001年大一学的也是这个,现在看起来还是依旧 blackboard 发表于 2021-11-12 11:092001年大一学的也是这个,现在看起来还是依旧
看起来还是依旧不会 大兵马元帅 发表于 2021-11-12 11:10
看起来还是依旧不会
绝了,我也学了点,但是看到这些怎么感觉跟我学的不一样呢,在网上找题目都找不到,太离谱了有点。 题目的要求是实现一个语言解析器, 格式看起来和汇编一样,但是实现和汇编没什么关系。应该是和编译原理有关,做一个简单的解析器 想学这个,但是没找到好的教程 本帖最后由 avid 于 2021-11-12 23:32 编辑
试试这个,这版是python写的,性能不好。
附件是从题目里抄的汇编语句,井号开头的语句不会被代码解释
class runAssemblyCode():
'''
简单解释汇编代码
'''
def __init__(self, path):
self.filepath = path
self.code = list()
self.pc = 0
self.vars = {}
def loadCode(self):
with open(self.filepath) as f:
lines = (line.strip() for line in f)
lines = (line for line in lines if line and not line.startswith('#'))
self.code.extend(lines)
def runCode(self):
statement = self.code
while(statement):
func, *args = statement.split()
runAssemblyCode.__dict__(self, args)
try:
statement = self.code
except IndexError:
statement = None
def mov(self, args):
a = args
v = args
aValue = self.vars.setdefault(a, 0)
if v.isnumeric():
aValue += int(v)
else:
aValue += self.vars
self.vars = aValue
self.pc += 1
def inc(self, args):
a = args
aValue = self.vars
aValue += 1
self.vars = aValue
self.pc += 1
def dec(self, args):
a = args
aValue = self.vars
aValue -=1
self.vars = aValue
self.pc +=1
def jnz(self, args):
a = args
offset = args
if self.vars:
self.pc += int(offset)
else:
self.pc += 1
def output(self):
for k, v in self.vars.items():
print(f'{k}\t{v}')
def main():
codeRunner = runAssemblyCode('./assembly_code.txt')
codeRunner.loadCode()
codeRunner.runCode()
codeRunner.output()
if __name__ == '__main__':
main()
页:
[1]