是否有任何语法规范可用于smali代码?我正在尝试使用smali代码,而缺少我的一件事是,smali中的一些方法有.prologue部分,而有些方法没有。不幸的是,维基似乎没有smali语法的信息。以前有人发现自己处于这种情况吗?如有任何建议/解决办法,将不胜感激。
EDIT1:我的目标是将日志消息添加到应用程序的所有活动的onResume方法的开头。
EDIT2:我使用ANTLRv4.1解析器来解析我的smali文件,并从CommonTree (解析树)和从smaliLexer获得TokenStream。现在正在为日志指令创建令牌并修改解析树,然后生成classes.dex文件是正确的方法吗?到目前为止,我还没有找到修改TokenStream的方法,也无法从修改后的ParseTree生成dex文件。
发布于 2013-08-02 18:00:02
在smali语言中,几乎所有东西都有dalvik字节码/dex格式的直接模拟。在这种情况下,.prologue指令对应于作为debug_info_item一部分的DBG_SET_PROLOGUE_END调试操作码。
来自http://s.android.com/tech/dalvik/dex-format.html
设置prologue_end状态机寄存器,指示添加的下一个位置项应视为方法序言的结尾(方法断点的适当位置)。prologue_end寄存器由任何特殊操作码(>= 0x0a)清除。
发布于 2013-08-02 13:43:57
您可以查看smali描述本身,它是由一个jflex文法构建的。将前导代码跳过第177行,在第177行开始标记规范。
https://stackoverflow.com/questions/18017118
复制相似问题