我最近做了一些关于可执行压缩的研究.编译test.cC语言源并在Linux中使用UPX压缩它而不是windows.它是终端列表:UPX: test.so NotCompressibleException.源代码test.c是:
int main(){
int i = 0;
printf("HelloWorld\n");
return 0;
}
Run Code Online (Sandbox Code Playgroud)
我猜是可执行文件太简单了吗?或者可能是我错过了什么?如果有人知道这个问题,请告诉我原因.如果没有人告诉我,我必须阅读源代码以找出问题.啊! 阅读源代码负担.
我定义了一个名为的java类DefineFields.它有一个空构造函数.当我编译它时,classes.dex文件中的十六进制代码显示如下:
7010 050C 0000 0E00 (show in little endian)
Run Code Online (Sandbox Code Playgroud)
之后,我搜索字节码规范,我发现它
(spec code) (hex of dex)
70 35c: invoke-direct (7010)
05 22x: move-wide/from16 (050C)
00 10x: nop (0000)
0E 10x: return-void (0E00)
Run Code Online (Sandbox Code Playgroud)
我读了规范.但我不能完全理解是什么35c.(我知道c,x在规范中有解释表.)更多我想知道的是我如何解释10在7010和 0C中的十六进制050C
这些东西与规范操作码不匹配.
构建Android应用程序时,ADT使用哪个编译器?ECJ还是Javac?它是否为Dalvik机器提供编译器?