首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在Hack程序集代码中初始化数组

在Hack程序集代码中初始化数组
EN

Stack Overflow用户
提问于 2020-10-28 02:47:07
回答 1查看 777关注 0票数 0

声明初始化数据的语法是什么,如:

  • 用hack汇编语言

初始化全局数组

例如。int [] arr = {1,2,3,4,5}

  • 初始化字符串文本?

“你好世界\n”

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-10-28 18:10:46

Hack汇编语言没有直接这样做的便利,因为它只装配程序指令,程序内存是只读的,不能被Hack机器指令读取,除了加载常量操作的简并情况之外。

因此,您要做的是编写代码,使用加载常量/存储操作序列初始化您的ram。这有点棘手,因为您只能加载15位常量。

当我面对这个问题时,我编写了一个python脚本来生成我需要的汇编代码。这里有一个python代码片段,它生成代码将任意值"word“存储到内存位置"base”中,这可能对您有帮助。

代码语言:javascript
复制
if word >= 32768:
    if word == 65535:
        print "\t@" + "{:05}".format(base) + "\t\t// " + str(word)
        print "\tM = -1"
    else:
        print "\tD = -1\t\t// " + str(word)
        print "\t@" + "{:05}".format(65535-word)
        print "\tD = D - A"
        print "\t@" + "{:05}".format(base)
        print "\tM = D"
else:
    if word == 0:
        print "\t@" + "{:05}".format(base) + "\t\t// " + str(word)
        print "\tM = 0"
    else:
        print "\t@" + "{:05}".format(word) + "\t\t// " + str(word)
        print "\tD = A"
        print "\t@" + "{:05}".format(base)
        print "\tM = D"

base += 1
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64565797

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档