{"id":165,"date":"2012-03-24T18:37:43","date_gmt":"2012-03-24T17:37:43","guid":{"rendered":"http:\/\/kronotai.com\/wordpress\/?page_id=165"},"modified":"2012-03-24T18:37:43","modified_gmt":"2012-03-24T17:37:43","slug":"changelog","status":"publish","type":"page","link":"https:\/\/kronotai.com\/wordpress\/holdec\/changelog\/","title":{"rendered":"Changelog"},"content":{"rendered":"\n\t\t\t\t<![CDATA[\n<h2 class=\"wp-block-heading\">Version 2.0 (2020-12-30)<\/h2>\n\n\n<ul class=\"wp-block-list\"><li>big feature: support x86-64 aka x64 aka AMD64<\/li><li>big feature: support x87 FPU instructions<\/li><li>big feature: support AARCH64<\/li><li>big feature: convert the global phase to streaming to process large binaries<\/li><li>feature: add option &#8220;&#8211;output-dir&#8221; to specify output directory<\/li><li>feature: unify the parameter types of multiple calls to the same function<\/li><li>feature: understand printf\/scanf format strings<\/li><li>feature: add regression tests in public decompiler-subjects repo<\/li><li>feature: convert division by multiplication to proper division<\/li><li>feature: add unset registers as parameters to current signature<\/li><li>feature: support &#8216;noReturn&#8217;, &#8216;noMemoryRead&#8217; and &#8216;noMemoryWrite&#8217; in function signatures<\/li><li>feature: improve modeling of noReturn function calls<\/li><li>feature: propagate memory values between blocks<\/li><li>feature: support Mach-O AARCH64 binaries<\/li><li>feature: load integer and floating point literals from read-only areas<\/li><li>feature: allow the user to specify read-only ranges<\/li><li>feature: support linux based &#8216;int 80&#8217; and &#8216;syscall&#8217; syscalls<\/li><li>feature: improve MS-DOS BIOS interrupt detection<\/li><li>feature: alternative implementation to convert local stack area to registers which copes better with overlapping access<\/li><li>feature: multiple performance improvements<\/li><li>change: to not create type information about local memory if this memory is later converted to registers<\/li><li>change: use &#8220;&#8221; for empty string literals of the type is known to be a char pointer<\/li><li>change: mark entry and exit block in output<\/li><li>change: do not print &#8220;return&#8221; for void functions<\/li><li>change: add predefined register values for MS-DOS COM format<\/li><li>change: use symbols for globals from the binary<\/li><li>change: a large amount of smaller transformations like &#8220;UNSIGNED_EXTEND(x) == UNSIGNED_EXTEND(y)&#8221; to &#8220;x == y&#8221;<\/li><li>fix: support binaries which contain multiple symbols for the same address<\/li><li>fix: remove some extra cases of unused variable in complex SSA situations<\/li><li>fix: treat chars with high bit as binary for reading string literals<\/li><li>fix: do not propage values which are too complex<\/li><li>fix: make various outputs more repeatable<\/li><li>fix: support binaries with sections which have gaps between them<\/li><li>fix: do not transform a+n1 n2 to a n2-n1 since it is not the same in general<\/li><li>fix: support for stack parameters which take more than one stack slot<\/li><li> fix: support recent JDK releases<\/li><li>fix: better support of code which runs into the end of the code section <\/li><li>fix: a lot of other bug fixes<\/li><\/ul>\n\n\n<h2 class=\"wp-block-heading\">Version 1.3 (2012-09-28)<\/h2>\n\n\n<ul class=\"wp-block-list\"><li>big feature: add a graphical user interface<\/li><li>feature: add support for MS-DOS COM file format<\/li><li>feature: add &#8211;treat-unknown-files-as-ms-dos-com command line option<\/li><li>feature: add the concept of holdec home where executable-independent information is stored<\/li><li>feature: add &#8211;home command line option<\/li><li>feature: add the ability to specify signature files for libraries; add &#8211;load-libs command line option<\/li><li>fix: some 16bit opcode issues<\/li><li>fix: recognize some more i386 opcodes as nops<\/li><li>fix: show C like signature for decompiled functions<\/li><li>change: add a dummy return block if the function has no return <\/li><\/ul>\n\n\n<h2 class=\"wp-block-heading\">Version 1.2 (2012-06-07)<\/h2>\n\n\n<ul class=\"wp-block-list\"><li>feature: support (in various levels) hopefully all x86 opcodes excluding FPU, x64, MMX, SSE<\/li><li>feature: add &#8211;help command line option<\/li><li>feature: add &#8211;hide-addresses command line option<\/li><li>feature: -c supports now multiple functions which are matched on function name with a regexp<\/li><li>feature: differ between three different types of undefined values: cpu opcode results in undefined value, not modeled by the decompiler and trashed by a function call<\/li><li>feature: add new type &#8216;bit&#8217; to the external type system<\/li><li>feature: simplify cond?0:1 to BIT_TO_INT(!cond) and cond?1:0 to BIT_TO_INT(cond)<\/li><li>feature: simplify x-y&gt;42 to x&gt;y+42<\/li><li>feature: a new file &#8216;symbol_table.txt&#8217; is written in current directory after each run<\/li><li>feature: support &#8216;pc&#8217; in the m68k code<\/li><li>change: use register names with two letters if required e.g. &#8216;reg_da&#8217;<\/li><li>change: replace builtin functions prefix from &#8216;intern_&#8217; to &#8216;<em>holdec<\/em>&#8216;<\/li><li>change: create names according their definition place; this should make generated names more repeatable<\/li><li>change: rework how concrete numbers are treated internally<\/li><li>change: treat signed and unsigned comparisons different internally<\/li><li>change: format numbers depending on the context (bit context -&gt; unsigned hex, signed context -&gt; signed decimal, unsigned and unknown context -&gt; unsigned decimal)<\/li><li>change: rework the SSA generation to use an algorithm based on Aycock and Horspool<br \/> change: do not convert tail controlled loops with a fixed number of iterations to a for(&#8230;) loop<\/li><li>fix: only issue a warning and do not die if a jump with a constant false condition is removed<\/li><li>fix: add dummy values for local-&gt;register converted variables without an initial assignment <\/li><\/ul>\n\n\n<h2 class=\"wp-block-heading\">Version 1.1 (2012-03-24)<\/h2>\n\n\n<ul class=\"wp-block-list\"><li>Feature: loader for PE (Portable Executable) files<\/li><li>Feature: new command line option &#8211;info<\/li><li>Feature: new command line option &#8211;repeatable<\/li><li>Feature: rework list of available commands (-c on the command line)<\/li><li>Feature: allow function names in the activeFunction section<\/li><li>Feature: allow function names in the function specific part<\/li><li>Change: more compact output on asm line processing<\/li><li>Fixes: a large amount of them <\/li><\/ul>\n]]>\t\t","protected":false},"excerpt":{"rendered":"<p>\t\t\t\t<![CDATA[]]>\t\t <a href=\"https:\/\/kronotai.com\/wordpress\/holdec\/changelog\/\">Continue reading <span class=\"meta-nav\">&rarr;<\/span><\/a><\/p>\n","protected":false},"author":2,"featured_media":0,"parent":28,"menu_order":0,"comment_status":"open","ping_status":"open","template":"","meta":{"footnotes":""},"class_list":["post-165","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/kronotai.com\/wordpress\/wp-json\/wp\/v2\/pages\/165","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/kronotai.com\/wordpress\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/kronotai.com\/wordpress\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/kronotai.com\/wordpress\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/kronotai.com\/wordpress\/wp-json\/wp\/v2\/comments?post=165"}],"version-history":[{"count":0,"href":"https:\/\/kronotai.com\/wordpress\/wp-json\/wp\/v2\/pages\/165\/revisions"}],"up":[{"embeddable":true,"href":"https:\/\/kronotai.com\/wordpress\/wp-json\/wp\/v2\/pages\/28"}],"wp:attachment":[{"href":"https:\/\/kronotai.com\/wordpress\/wp-json\/wp\/v2\/media?parent=165"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}