From 0b2c3371b394874da54ae706c364e607a8b89c19 Mon Sep 17 00:00:00 2001 From: msojocs Date: Mon, 17 Jul 2023 20:15:30 +0800 Subject: [PATCH] fix: feed with 0x15 --- .vscode/settings.json | 2 +- src/wxml/dom_lib/machine.cpp | 12 ++++++++---- test/cmd.txt | 4 ---- test/wcc.disassembly.cpp | 20 ++++++++++---------- test/wcc.sh | 16 ++++++++++++++-- 5 files changed, 33 insertions(+), 21 deletions(-) delete mode 100644 test/cmd.txt diff --git a/.vscode/settings.json b/.vscode/settings.json index 308302a..167053a 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -60,7 +60,7 @@ "cwd": "/mnt/d/Work/WeChatProjects/miniprogram-demo/miniprogram", "args": [ "\"--config-path\"", - "\"/mnt/d/Work/disassembly/wcc-exec/wcc/cmd1.txt\"" + "\"/mnt/d/Work/disassembly/wcc-exec/wcc/config/cmd2.txt\"" ] }, "cmake.configureSettings": { diff --git a/src/wxml/dom_lib/machine.cpp b/src/wxml/dom_lib/machine.cpp index bfc4bdf..183f203 100644 --- a/src/wxml/dom_lib/machine.cpp +++ b/src/wxml/dom_lib/machine.cpp @@ -351,13 +351,17 @@ namespace WXML this->offset_24 = (uint16_t)v46; if (bittest(&v46, 0x15u)) // 0x15 -> 21 { - // TODO: if (this->fileLength > this->offset_4) { - this->offset_4++; - this->offset_20++; - WXML::DOMLib::Token token; + token.offset_8 = this->offset_16; + token.offset_12 = this->offset_20; + this->offset_20++; + token.offset_16 = this->offset_4; + this->offset_4++; + + token.offset_20 = 1; + token.offset_24 = 0; a3.push_back(token); } } diff --git a/test/cmd.txt b/test/cmd.txt deleted file mode 100644 index d6b588c..0000000 --- a/test/cmd.txt +++ /dev/null @@ -1,4 +0,0 @@ -"-d" "--split" ">_<109" "-xc" "9>_<109./miniprogram_npm/miniprogram-barrage/index.wxml>_<1090>_<109./miniprogram_npm/miniprogram-recycle-view/recycle-item.wxml>_<1090>_<109./miniprogram_npm/miniprogram-recycle-view/recycle-view.wxml>_<1090>_<109./miniprogram_npm/wxml-to-canvas/index.wxml>_<1090>_<109./page/API/index.wxml>_<1091>_<109set-tab-bar>_<109./page/API/components/set-tab-bar/set-tab-bar.wxml>_<1090>_<109./page/cloud/index.wxml>_<1090>_<109./page/component/index.wxml>_<1090>_<109./page/extend/index.wxml>_<1090" "-lla" "./miniprogram_npm/miniprogram-barrage/index>_<109./miniprogram_npm/miniprogram-recycle-view/recycle-item>_<109./miniprogram_npm/miniprogram-recycle-view/recycle-view>_<109./miniprogram_npm/wxml-to-canvas/index>_<109./page/API/index>_<109./page/API/components/set-tab-bar/set-tab-bar>_<109./page/cloud/index>_<109./page/component/index>_<109./page/extend/index" "./miniprogram_npm/miniprogram-barrage/index.wxml" "./miniprogram_npm/miniprogram-recycle-view/recycle-item.wxml" "./miniprogram_npm/miniprogram-recycle-view/recycle-view.wxml" "./miniprogram_npm/wxml-to-canvas/index.wxml" "./page/API/index.wxml" "./page/API/components/set-tab-bar/set-tab-bar.wxml" "./page/cloud/index.wxml" "./page/common/foot.wxml" "./page/common/head.wxml" "./page/component/index.wxml" "./page/extend/index.wxml" "-gn" "$gwx" - - - diff --git a/test/wcc.disassembly.cpp b/test/wcc.disassembly.cpp index e5124a0..7109b14 100644 --- a/test/wcc.disassembly.cpp +++ b/test/wcc.disassembly.cpp @@ -27330,24 +27330,24 @@ LABEL_12: // fileLength > (v17 offset_4) if ( *(_DWORD *)v15 > v17 ) { - // offset_4存起来,有用;偏移 4 * 1 = 4 - v53 = *((_DWORD *)v15 + 1); + // this->offset_4存起来,有用;偏移 4 * 1 = 4 + v53 = *((_DWORD *)v15 + 1); // v49.offset_16 v57 = v59; v61 = v63; v65 = v67; // v18 外面不会用;偏移 4 * 4 = 16 v18 = *((_DWORD *)v15 + 4); - // offset_4++; v17是offset_4的值 + // this->offset_4++; v17是offset_4的值 *((_DWORD *)v15 + 1) = v17 + 1; // v18是offset_16的值 - v51 = v18; - // offset_20 暂存,有用;偏移 4 * 5 = 20 + v51 = v18; // v49.offset_8 + // this->offset_20 暂存,有用;偏移 4 * 5 = 20 v19 = *((_DWORD *)v15 + 5); v49 = 0; - v52 = v19; - // offset_20++ + v52 = v19; // v49.offset_12 + // this->offset_20++ *((_DWORD *)v15 + 5) = v19 + 1; - v50 = 0; + v50 = 0; // v49.offset_4 v58 = 0; v59[0] = 0; v62 = 0; @@ -27357,8 +27357,8 @@ LABEL_12: v56 = 0; v64 = 0; v60 = -1; - v54 = 1; - v55 = 0; + v54 = 1; // v49.offset_20 + v55 = 0; // v49.offset_24 std::vector::push_back(a3, (WXML::DOMLib::Token *)&v49); // a3.push_back(); WXML::DOMLib::Token::~Token((int)&v49); diff --git a/test/wcc.sh b/test/wcc.sh index 1ebe7ab..6b3005b 100644 --- a/test/wcc.sh +++ b/test/wcc.sh @@ -1,4 +1,16 @@ #!/bin/bash + +root_dir=$(cd `dirname $0`/.. && pwd -P) + cd /mnt/d/Work/WeChatProjects/miniprogram-demo/miniprogram -/root/github/wx-compiler/build/wcc "--config-path" "/mnt/d/Work/disassembly/wcc-exec/wcc/cmd1.txt" > /root/github/wx-compiler/test/wcc_linux.json -/mnt/d/Work/disassembly/wcc-exec/wcc/wcc.exe "--config-path" "d:/Work/disassembly/wcc-exec/wcc/cmd1.txt" > /root/github/wx-compiler/test/wcc_win.json + +# list="cmd1 cmd2" +# for cmd in $list; +# do +# echo $cmd +# /root/github/wx-compiler/build/wcc "--config-path" "/mnt/d/Work/disassembly/wcc-exec/wcc/config/$cmd.txt" > /root/github/wx-compiler/test/wcc_linux.json +# /mnt/d/Work/disassembly/wcc-exec/wcc/wcc.exe "--config-path" "d:/Work/disassembly/wcc-exec/wcc/config/$cmd.txt" > /root/github/wx-compiler/test/wcc_win.json +# done; + +/root/github/wx-compiler/build/wcc "--config-path" "/mnt/d/Work/disassembly/wcc-exec/wcc/config/cmd2.txt" > /root/github/wx-compiler/test/wcc_linux.json +/mnt/d/Work/disassembly/wcc-exec/wcc/wcc.exe "--config-path" "d:/Work/disassembly/wcc-exec/wcc/config/cmd2.txt" > /root/github/wx-compiler/test/wcc_win.json