writeProcComments is now member of Function, at it has an ostream based overload, also added gmock framework to dependencies
This commit is contained in:
parent
bc395da6ab
commit
d39449124a
@ -1,17 +1,25 @@
|
|||||||
PROJECT(dcc_original)
|
PROJECT(dcc_original)
|
||||||
cmake_minimum_required(VERSION 2.8)
|
CMAKE_MINIMUM_REQUIRED(VERSION 2.8)
|
||||||
|
|
||||||
|
OPTION(dcc_build_tests "Enable unit tests." OFF)
|
||||||
|
|
||||||
ADD_DEFINITIONS(-D_CRT_SECURE_NO_WARNINGS -D__UNIX__ -D__STDC_LIMIT_MACROS -D__STDC_CONSTANT_MACROS)
|
ADD_DEFINITIONS(-D_CRT_SECURE_NO_WARNINGS -D__UNIX__ -D__STDC_LIMIT_MACROS -D__STDC_CONSTANT_MACROS)
|
||||||
if(CMAKE_BUILD_TOOL MATCHES "(msdev|devenv|nmake)")
|
IF(CMAKE_BUILD_TOOL MATCHES "(msdev|devenv|nmake)")
|
||||||
ADD_DEFINITIONS(-D_CRT_SECURE_NO_WARNINGS -D__UNIX__ -D_CRT_NONSTDC_NO_DEPRECATE)
|
ADD_DEFINITIONS(-D_CRT_SECURE_NO_WARNINGS -D__UNIX__ -D_CRT_NONSTDC_NO_DEPRECATE)
|
||||||
add_definitions(/W4)
|
ADD_DEFINITIONS(/W4)
|
||||||
else()
|
ELSE()
|
||||||
SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall --std=c++0x")
|
SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall --std=c++0x")
|
||||||
#SET(CMAKE_CXX_FLAGS_DEBUG "-D_GLIBCXX_DEBUG ${CMAKE_CXX_FLAGS_DEBUG}" )
|
SET(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG}" ) #-D_GLIBCXX_DEBUG
|
||||||
endif()
|
ENDIF()
|
||||||
|
|
||||||
|
SET(CMAKE_MODULE_PATH ${PROJECT_SOURCE_DIR}/CMakeScripts;${CMAKE_MODULE_PATH})
|
||||||
|
|
||||||
FIND_PACKAGE(LLVM)
|
FIND_PACKAGE(LLVM)
|
||||||
FIND_PACKAGE(Boost)
|
FIND_PACKAGE(Boost)
|
||||||
|
IF(dcc_build_tests)
|
||||||
|
FIND_PACKAGE(GMock)
|
||||||
|
ENDIF()
|
||||||
|
|
||||||
llvm_map_components_to_libraries(REQ_LLVM_LIBRARIES jit native mc support)
|
llvm_map_components_to_libraries(REQ_LLVM_LIBRARIES jit native mc support)
|
||||||
INCLUDE_DIRECTORIES(
|
INCLUDE_DIRECTORIES(
|
||||||
include
|
include
|
||||||
@ -87,6 +95,13 @@ set(dcc_HEADERS
|
|||||||
include/StackFrame.h
|
include/StackFrame.h
|
||||||
include/BasicBlock.h
|
include/BasicBlock.h
|
||||||
)
|
)
|
||||||
|
SOURCE_GROUP(Source FILES ${dcc_SOURCES})
|
||||||
|
SOURCE_GROUP(Headers FILES ${dcc_HEADERS})
|
||||||
|
|
||||||
ADD_EXECUTABLE(dcc_original ${dcc_SOURCES} ${dcc_HEADERS})
|
ADD_EXECUTABLE(dcc_original ${dcc_SOURCES} ${dcc_HEADERS})
|
||||||
TARGET_LINK_LIBRARIES(dcc_original ${REQ_LLVM_LIBRARIES})
|
TARGET_LINK_LIBRARIES(dcc_original ${REQ_LLVM_LIBRARIES})
|
||||||
|
if(dcc_build_tests)
|
||||||
|
ADD_SUBDIRECTORY(src)
|
||||||
|
endif()
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
89
CMakeScripts/FindGMock.cmake
Normal file
89
CMakeScripts/FindGMock.cmake
Normal file
@ -0,0 +1,89 @@
|
|||||||
|
# Locate the Google C++ Mocking Framework.
|
||||||
|
#
|
||||||
|
# Defines the following variables:
|
||||||
|
#
|
||||||
|
# GMOCK_FOUND - Found the Google Mocking framework
|
||||||
|
# GMOCK_INCLUDE_DIRS - Include directories
|
||||||
|
#
|
||||||
|
# Also defines the library variables below as normal
|
||||||
|
# variables. These contain debug/optimized keywords when
|
||||||
|
# a debugging library is found.
|
||||||
|
#
|
||||||
|
# GMOCK_BOTH_LIBRARIES - Both libgmock & libgmock-main
|
||||||
|
# GMOCK_LIBRARIES - libgmock
|
||||||
|
# GMOCK_MAIN_LIBRARIES - libgmock-main
|
||||||
|
#
|
||||||
|
# Accepts the following variables as input:
|
||||||
|
#
|
||||||
|
# GMOCK_ROOT - (as CMake or env. variable)
|
||||||
|
# The root directory of the gmock install prefix
|
||||||
|
#
|
||||||
|
#-----------------------
|
||||||
|
# Example Usage:
|
||||||
|
#
|
||||||
|
# enable_testing(true)
|
||||||
|
# find_package(GMock REQUIRED)
|
||||||
|
# include_directories(${GMOCK_INCLUDE_DIRS})
|
||||||
|
#
|
||||||
|
# add_executable(foo foo.cc)
|
||||||
|
# target_link_libraries(foo ${GMOCK_BOTH_LIBRARIES})
|
||||||
|
#
|
||||||
|
# add_test(AllTestsInFoo foo)
|
||||||
|
#
|
||||||
|
|
||||||
|
set (GMOCK_FOUND FALSE)
|
||||||
|
|
||||||
|
set (GMOCK_ROOT $ENV{GMOCK_ROOT} CACHE PATH "Path to the gmock root directory.")
|
||||||
|
if (NOT EXISTS ${GMOCK_ROOT})
|
||||||
|
message (FATAL_ERROR "GMOCK_ROOT does not exist.")
|
||||||
|
endif ()
|
||||||
|
|
||||||
|
set (GMOCK_BUILD ${GMOCK_ROOT}/build CACHE PATH "Path to the gmock build directory.")
|
||||||
|
if (NOT EXISTS ${GMOCK_BUILD})
|
||||||
|
message (FATAL_ERROR "GMOCK_BUILD does not exist.")
|
||||||
|
endif ()
|
||||||
|
|
||||||
|
# Find the include directory
|
||||||
|
find_path(GMOCK_INCLUDE_DIRS gmock/gmock.h
|
||||||
|
HINTS
|
||||||
|
${GMOCK_ROOT}/include
|
||||||
|
)
|
||||||
|
mark_as_advanced(GMOCK_INCLUDE_DIRS)
|
||||||
|
|
||||||
|
function(_gmock_find_library _name)
|
||||||
|
find_library(${_name}
|
||||||
|
NAMES ${ARGN}
|
||||||
|
HINTS
|
||||||
|
$ENV{GMOCK_ROOT}
|
||||||
|
${GMOCK_ROOT}
|
||||||
|
)
|
||||||
|
mark_as_advanced(${_name})
|
||||||
|
endfunction()
|
||||||
|
|
||||||
|
# Find the gmock libraries
|
||||||
|
if (MSVC)
|
||||||
|
find_library (GMOCK_LIBRARIES_DEBUG gmock ${GMOCK_BUILD}/Debug)
|
||||||
|
find_library (GMOCK_LIBRARIES_RELEASE gmock ${GMOCK_BUILD}/Release)
|
||||||
|
find_library (GMOCK_MAIN_LIBRARIES_DEBUG gmock_main ${GMOCK_BUILD}/Debug)
|
||||||
|
find_library (GMOCK_MAIN_LIBRARIES_RELEASE gmock_main ${GMOCK_BUILD}/Release)
|
||||||
|
set (GMOCK_LIBRARIES
|
||||||
|
debug ${GMOCK_LIBRARIES_DEBUG}
|
||||||
|
optimized ${GMOCK_LIBRARIES_RELEASE}
|
||||||
|
)
|
||||||
|
set (GMOCK_MAIN_LIBRARIES
|
||||||
|
debug ${GMOCK_MAIN_LIBRARIES_DEBUG}
|
||||||
|
optimized ${GMOCK_MAIN_LIBRARIES_RELEASE}
|
||||||
|
)
|
||||||
|
# message (STATUS "GMOCK_BOTH_LIBRARIES ARE ${GMOCK_BOTH_LIBRARIES}")
|
||||||
|
else ()
|
||||||
|
find_library (GMOCK_LIBRARIES gmock ${GMOCK_BUILD})
|
||||||
|
find_library (GMOCK_MAIN_LIBRARIES gmock_main ${GMOCK_BUILD})
|
||||||
|
find_library (GTEST_LIBRARIES gtest ${GMOCK_BUILD}/gtest)
|
||||||
|
find_library (GTEST_MAIN_LIBRARIES gtest_main ${GMOCK_BUILD})
|
||||||
|
endif ()
|
||||||
|
set (GMOCK_BOTH_LIBRARIES
|
||||||
|
${GMOCK_LIBRARIES}
|
||||||
|
${GMOCK_MAIN_LIBRARIES}
|
||||||
|
${GTEST_LIBRARIES}
|
||||||
|
${GTEST_MAIN_LIBRARIES}
|
||||||
|
)
|
||||||
@ -2,6 +2,7 @@
|
|||||||
#include "ast.h"
|
#include "ast.h"
|
||||||
#include "types.h"
|
#include "types.h"
|
||||||
#include "machine_x86.h"
|
#include "machine_x86.h"
|
||||||
|
|
||||||
struct IDENTTYPE
|
struct IDENTTYPE
|
||||||
{
|
{
|
||||||
condId idType;
|
condId idType;
|
||||||
|
|||||||
@ -11,6 +11,13 @@
|
|||||||
struct CALL_GRAPH;
|
struct CALL_GRAPH;
|
||||||
struct COND_EXPR;
|
struct COND_EXPR;
|
||||||
struct Disassembler;
|
struct Disassembler;
|
||||||
|
struct Function;
|
||||||
|
struct CALL_GRAPH;
|
||||||
|
|
||||||
|
typedef llvm::iplist<Function> FunctionListType;
|
||||||
|
typedef FunctionListType lFunction;
|
||||||
|
typedef lFunction::iterator ilFunction;
|
||||||
|
|
||||||
namespace llvm
|
namespace llvm
|
||||||
{
|
{
|
||||||
// Traits for intrusive list of basic blocks...
|
// Traits for intrusive list of basic blocks...
|
||||||
@ -143,6 +150,7 @@ public:
|
|||||||
void buildCFG(Disassembler &ds);
|
void buildCFG(Disassembler &ds);
|
||||||
void controlFlowAnalysis();
|
void controlFlowAnalysis();
|
||||||
void newRegArg(iICODE picode, iICODE ticode);
|
void newRegArg(iICODE picode, iICODE ticode);
|
||||||
|
void writeProcComments(std::ostream &ostr);
|
||||||
protected:
|
protected:
|
||||||
// TODO: replace those with friend visitor ?
|
// TODO: replace those with friend visitor ?
|
||||||
void propLongReg(int loc_ident_idx, const ID &pLocId);
|
void propLongReg(int loc_ident_idx, const ID &pLocId);
|
||||||
|
|||||||
@ -1,27 +1,7 @@
|
|||||||
SET(SOURCES ast.cpp backend.cpp bundle.cpp chklib.cpp
|
SET(dcc_test_SOURCES tests/comwrite.cpp)
|
||||||
comwrite.cpp control.cpp dataflow.cpp dcc.cpp
|
include_directories(${GMOCK_INCLUDE_DIRS} ${GMOCK_ROOT}/gtest/include)
|
||||||
disassem.cpp error.cpp fixwild.cpp frontend.cpp
|
enable_testing()
|
||||||
graph.cpp hlicode.cpp icode.cpp
|
add_executable(tester ${dcc_test_SOURCES})
|
||||||
idioms.cpp locident.cpp parser.cpp
|
target_link_libraries(tester
|
||||||
perfhlib.cpp procs.cpp proplong.cpp reducible.cpp
|
${GMOCK_BOTH_LIBRARIES} ${REQ_LLVM_LIBRARIES})
|
||||||
scanner.cpp symtab.cpp udm.cpp)
|
add_test(dcc-tests tester)
|
||||||
SET(dc_INCLUDES
|
|
||||||
${PROJECT_SOURCE_DIR}/include/ast.h
|
|
||||||
${PROJECT_SOURCE_DIR}/include/bundle.h
|
|
||||||
${PROJECT_SOURCE_DIR}/include/dcc.h
|
|
||||||
${PROJECT_SOURCE_DIR}/include/disassem.h
|
|
||||||
${PROJECT_SOURCE_DIR}/include/dosdcc.h
|
|
||||||
${PROJECT_SOURCE_DIR}/include/error.h
|
|
||||||
${PROJECT_SOURCE_DIR}/include/graph.h
|
|
||||||
${PROJECT_SOURCE_DIR}/include/hlicode.h
|
|
||||||
${PROJECT_SOURCE_DIR}/include/icode.h
|
|
||||||
${PROJECT_SOURCE_DIR}/include/locident.h
|
|
||||||
${PROJECT_SOURCE_DIR}/include/perfhlib.h
|
|
||||||
${PROJECT_SOURCE_DIR}/include/scanner.h
|
|
||||||
${PROJECT_SOURCE_DIR}/include/state.h
|
|
||||||
${PROJECT_SOURCE_DIR}/include/symtab.h
|
|
||||||
${PROJECT_SOURCE_DIR}/include/types.h
|
|
||||||
)
|
|
||||||
SOURCE_GROUP(Source FILES ${SOURCES})
|
|
||||||
SOURCE_GROUP(Headers FILES ${dc_INCLUDES})
|
|
||||||
ADD_EXECUTABLE(dcc_oo ${SOURCES} ${dc_INCLUDES})
|
|
||||||
|
|||||||
@ -50,8 +50,6 @@ static void writeStrTab (std::ostream &ios, strTable &strTab)
|
|||||||
void writeBundle (std::ostream &ios, bundle procCode)
|
void writeBundle (std::ostream &ios, bundle procCode)
|
||||||
{
|
{
|
||||||
writeStrTab (ios, procCode.decl);
|
writeStrTab (ios, procCode.decl);
|
||||||
if (procCode.decl[procCode.decl.size() - 1][0] != ' ')
|
|
||||||
ios << "\n";
|
|
||||||
writeStrTab (ios, procCode.code);
|
writeStrTab (ios, procCode.code);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -184,6 +184,13 @@ void LLInst::writeIntComment (std::ostringstream &s)
|
|||||||
|
|
||||||
//, &cCode.decl
|
//, &cCode.decl
|
||||||
void Function::writeProcComments()
|
void Function::writeProcComments()
|
||||||
|
{
|
||||||
|
std::ostringstream ostr;
|
||||||
|
writeProcComments(ostr);
|
||||||
|
cCode.appendDecl(ostr.str());
|
||||||
|
}
|
||||||
|
|
||||||
|
void Function::writeProcComments(std::ostream &ostr)
|
||||||
{
|
{
|
||||||
int i;
|
int i;
|
||||||
ID *id; /* Pointer to register argument identifier */
|
ID *id; /* Pointer to register argument identifier */
|
||||||
@ -191,79 +198,82 @@ void Function::writeProcComments()
|
|||||||
|
|
||||||
/* About the parameters */
|
/* About the parameters */
|
||||||
if (this->cbParam)
|
if (this->cbParam)
|
||||||
cCode.appendDecl("/* Takes %d bytes of parameters.\n",this->cbParam);
|
ostr << "/* Takes "<<this->cbParam<<" bytes of parameters.\n";
|
||||||
else if (this->flg & REG_ARGS)
|
else if (this->flg & REG_ARGS)
|
||||||
{
|
{
|
||||||
cCode.appendDecl("/* Uses register arguments:\n");
|
ostr << "/* Uses register arguments:\n";
|
||||||
for (i = 0; i < this->args.numArgs; i++)
|
for (i = 0; i < this->args.numArgs; i++)
|
||||||
{
|
{
|
||||||
psym = &this->args.sym[i];
|
psym = &this->args.sym[i];
|
||||||
|
ostr << " * "<<psym->name<<" = ";
|
||||||
if (psym->regs->expr.ident.idType == REGISTER)
|
if (psym->regs->expr.ident.idType == REGISTER)
|
||||||
{
|
{
|
||||||
id = &this->localId.id_arr[psym->regs->expr.ident.idNode.regiIdx];
|
id = &this->localId.id_arr[psym->regs->expr.ident.idNode.regiIdx];
|
||||||
cCode.appendDecl(" * %s = %s.\n", psym->name,
|
ostr << Machine_X86::regName(id->id.regi);
|
||||||
Machine_X86::regName(id->id.regi).c_str());
|
|
||||||
}
|
}
|
||||||
else /* long register */
|
else /* long register */
|
||||||
{
|
{
|
||||||
id = &this->localId.id_arr[psym->regs->expr.ident.idNode.longIdx];
|
id = &this->localId.id_arr[psym->regs->expr.ident.idNode.longIdx];
|
||||||
cCode.appendDecl(" * %s = %s:%s.\n", psym->name,
|
ostr << Machine_X86::regName(id->id.longId.h) << ":";
|
||||||
Machine_X86::regName(id->id.longId.h).c_str(),
|
ostr << Machine_X86::regName(id->id.longId.l);
|
||||||
Machine_X86::regName(id->id.longId.l).c_str());
|
|
||||||
}
|
}
|
||||||
|
ostr << ".\n";
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
cCode.appendDecl("/* Takes no parameters.\n");
|
ostr << "/* Takes no parameters.\n";
|
||||||
|
|
||||||
/* Type of procedure */
|
/* Type of procedure */
|
||||||
if (this->flg & PROC_RUNTIME)
|
if (this->flg & PROC_RUNTIME)
|
||||||
cCode.appendDecl(" * Runtime support routine of the compiler.\n");
|
ostr << " * Runtime support routine of the compiler.\n";
|
||||||
if (this->flg & PROC_IS_HLL)
|
if (this->flg & PROC_IS_HLL)
|
||||||
cCode.appendDecl(" * High-level language prologue code.\n");
|
ostr << " * High-level language prologue code.\n";
|
||||||
if (this->flg & PROC_ASM)
|
if (this->flg & PROC_ASM)
|
||||||
{
|
{
|
||||||
cCode.appendDecl(" * Untranslatable routine. Assembler provided.\n");
|
ostr << " * Untranslatable routine. Assembler provided.\n";
|
||||||
if (this->flg & PROC_IS_FUNC)
|
if (this->flg & PROC_IS_FUNC)
|
||||||
switch (this->retVal.type) {
|
switch (this->retVal.type) { // TODO: Functions return value in various regs
|
||||||
case TYPE_BYTE_SIGN: case TYPE_BYTE_UNSIGN:
|
case TYPE_BYTE_SIGN: case TYPE_BYTE_UNSIGN:
|
||||||
cCode.appendDecl(" * Return value in register al.\n");
|
ostr << " * Return value in register al.\n";
|
||||||
break;
|
break;
|
||||||
case TYPE_WORD_SIGN: case TYPE_WORD_UNSIGN:
|
case TYPE_WORD_SIGN: case TYPE_WORD_UNSIGN:
|
||||||
cCode.appendDecl(" * Return value in register ax.\n");
|
ostr << " * Return value in register ax.\n";
|
||||||
break;
|
break;
|
||||||
case TYPE_LONG_SIGN: case TYPE_LONG_UNSIGN:
|
case TYPE_LONG_SIGN: case TYPE_LONG_UNSIGN:
|
||||||
cCode.appendDecl(" * Return value in registers dx:ax.\n");
|
ostr << " * Return value in registers dx:ax.\n";
|
||||||
break;
|
break;
|
||||||
} /* eos */
|
} /* eos */
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Calling convention */
|
/* Calling convention */
|
||||||
if (this->flg & CALL_PASCAL)
|
if (this->flg & CALL_PASCAL)
|
||||||
cCode.appendDecl(" * Pascal calling convention.\n");
|
ostr << " * Pascal calling convention.\n";
|
||||||
else if (this->flg & CALL_C)
|
else if (this->flg & CALL_C)
|
||||||
cCode.appendDecl(" * C calling convention.\n");
|
ostr << " * C calling convention.\n";
|
||||||
else if (this->flg & CALL_UNKNOWN)
|
else if (this->flg & CALL_UNKNOWN)
|
||||||
cCode.appendDecl(" * Unknown calling convention.\n");
|
ostr << " * Unknown calling convention.\n";
|
||||||
|
|
||||||
/* Other flags */
|
/* Other flags */
|
||||||
if (this->flg & (PROC_BADINST | PROC_IJMP))
|
if (this->flg & (PROC_BADINST | PROC_IJMP))
|
||||||
cCode.appendDecl(" * Incomplete due to an %s.\n",
|
{
|
||||||
(this->flg & PROC_BADINST)? "untranslated opcode":
|
ostr << " * Incomplete due to an ";
|
||||||
"indirect JMP");
|
if(this->flg & PROC_BADINST)
|
||||||
|
ostr << "untranslated opcode.\n";
|
||||||
|
else
|
||||||
|
ostr << "indirect JMP.\n";
|
||||||
|
}
|
||||||
if (this->flg & PROC_ICALL)
|
if (this->flg & PROC_ICALL)
|
||||||
cCode.appendDecl(" * Indirect call procedure.\n");
|
ostr << " * Indirect call procedure.\n";
|
||||||
if (this->flg & IMPURE)
|
if (this->flg & IMPURE)
|
||||||
cCode.appendDecl(" * Contains impure code.\n");
|
ostr << " * Contains impure code.\n";
|
||||||
if (this->flg & NOT_HLL)
|
if (this->flg & NOT_HLL)
|
||||||
cCode.appendDecl(" * Contains instructions not normally used by compilers.\n");
|
ostr << " * Contains instructions not normally used by compilers.\n";
|
||||||
if (this->flg & FLOAT_OP)
|
if (this->flg & FLOAT_OP)
|
||||||
cCode.appendDecl(" * Contains coprocessor instructions.\n");
|
ostr << " * Contains coprocessor instructions.\n";
|
||||||
|
|
||||||
/* Graph reducibility */
|
/* Graph reducibility */
|
||||||
if (this->flg & GRAPH_IRRED)
|
if (this->flg & GRAPH_IRRED)
|
||||||
cCode.appendDecl(" * Irreducible control flow graph.\n");
|
ostr << " * Irreducible control flow graph.\n";
|
||||||
cCode.appendDecl(" */\n{\n");
|
ostr << " */\n{\n";
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
14
src/tests/comwrite.cpp
Normal file
14
src/tests/comwrite.cpp
Normal file
@ -0,0 +1,14 @@
|
|||||||
|
#include "dcc.h"
|
||||||
|
#include <gmock/gmock.h>
|
||||||
|
#include <gtest/gtest.h>
|
||||||
|
|
||||||
|
TEST(CowriteTest, HandlesZeroInput) {
|
||||||
|
EXPECT_EQ(1, 1);
|
||||||
|
}
|
||||||
|
|
||||||
|
int main(int argc, char** argv) {
|
||||||
|
// The following line must be executed to initialize Google Mock
|
||||||
|
// (and Google Test) before running the tests.
|
||||||
|
::testing::InitGoogleMock(&argc, argv);
|
||||||
|
return RUN_ALL_TESTS();
|
||||||
|
}
|
||||||
@ -74,7 +74,6 @@ void main ()
|
|||||||
{
|
{
|
||||||
long loc1;
|
long loc1;
|
||||||
long loc2;
|
long loc2;
|
||||||
|
|
||||||
printf ("enter number of iterations ");
|
printf ("enter number of iterations ");
|
||||||
scanf ("%ld", &loc0);
|
scanf ("%ld", &loc0);
|
||||||
printf ("executing %ld iterations\n", loc2);
|
printf ("executing %ld iterations\n", loc2);
|
||||||
|
|||||||
@ -110,7 +110,6 @@ long loc3;
|
|||||||
long loc4;
|
long loc4;
|
||||||
long loc5;
|
long loc5;
|
||||||
int loc6; /* ax */
|
int loc6; /* ax */
|
||||||
|
|
||||||
scanf ("%ld", &loc0);
|
scanf ("%ld", &loc0);
|
||||||
printf ("executing %ld iterations\n", loc5);
|
printf ("executing %ld iterations\n", loc5);
|
||||||
scanf ("%ld", &loc2);
|
scanf ("%ld", &loc2);
|
||||||
|
|||||||
@ -16,7 +16,6 @@ int loc2;
|
|||||||
long loc3;
|
long loc3;
|
||||||
long loc4;
|
long loc4;
|
||||||
int loc5;
|
int loc5;
|
||||||
|
|
||||||
printf ("enter number of iterations\n");
|
printf ("enter number of iterations\n");
|
||||||
scanf ("%ld", &loc0);
|
scanf ("%ld", &loc0);
|
||||||
printf ("executing %ld iterations\n", loc4);
|
printf ("executing %ld iterations\n", loc4);
|
||||||
|
|||||||
@ -16,7 +16,6 @@ long loc2;
|
|||||||
long loc3;
|
long loc3;
|
||||||
int loc4;
|
int loc4;
|
||||||
int loc5;
|
int loc5;
|
||||||
|
|
||||||
printf ("enter number of iterations\n");
|
printf ("enter number of iterations\n");
|
||||||
scanf ("%ld", &loc0);
|
scanf ("%ld", &loc0);
|
||||||
printf ("executing %ld iterations\n", loc3);
|
printf ("executing %ld iterations\n", loc3);
|
||||||
|
|||||||
@ -17,7 +17,6 @@ int loc3;
|
|||||||
long loc4;
|
long loc4;
|
||||||
long loc5;
|
long loc5;
|
||||||
int loc6; /* ax */
|
int loc6; /* ax */
|
||||||
|
|
||||||
scanf ("%ld", &loc0);
|
scanf ("%ld", &loc0);
|
||||||
printf ("executing %ld iterations\n", loc5);
|
printf ("executing %ld iterations\n", loc5);
|
||||||
scanf ("%ld", &loc1);
|
scanf ("%ld", &loc1);
|
||||||
|
|||||||
@ -13,7 +13,6 @@ void main ()
|
|||||||
{
|
{
|
||||||
int loc1;
|
int loc1;
|
||||||
int loc2;
|
int loc2;
|
||||||
|
|
||||||
loc1 = 255;
|
loc1 = 255;
|
||||||
loc2 = 143;
|
loc2 = 143;
|
||||||
loc2 = (loc1 + loc2);
|
loc2 = (loc1 + loc2);
|
||||||
|
|||||||
639
tests/prev_base/DHAMP.EXE.a1
Normal file
639
tests/prev_base/DHAMP.EXE.a1
Normal file
@ -0,0 +1,639 @@
|
|||||||
|
main PROC FAR
|
||||||
|
000 0008B4 55 PUSH bp
|
||||||
|
001 0008B5 8BEC MOV bp, sp
|
||||||
|
002 0008B7 81ECD400 SUB sp, 0D4h
|
||||||
|
003 0008BB 56 PUSH si
|
||||||
|
004 0008BC 33F6 XOR si, si
|
||||||
|
005 0008BE B80700 MOV ax, 7
|
||||||
|
006 0008C1 50 PUSH ax
|
||||||
|
007 0008C2 1E PUSH ds
|
||||||
|
008 0008C3 B89800 MOV ax, 98h
|
||||||
|
009 0008C6 50 PUSH ax
|
||||||
|
010 0008C7 9A02000E05 CALL far ptr printf
|
||||||
|
011 0008CC 83C406 ADD sp, 6
|
||||||
|
012 0008CF E98401 JMP L1
|
||||||
|
|
||||||
|
013 000A56 83FE06 L1: CMP si, 6
|
||||||
|
014 000A59 7D03 JGE L2
|
||||||
|
015 000A5B E974FE JMP L3
|
||||||
|
|
||||||
|
016 0008D2 8BC6 L3: MOV ax, si
|
||||||
|
017 0008D4 3D0500 CMP ax, 5
|
||||||
|
018 0008D7 7603 JBE L4
|
||||||
|
019 0008D9 E97701 JMP L5
|
||||||
|
|
||||||
|
020 000A53 EB00 L5: JMP L6
|
||||||
|
|
||||||
|
021 000A55 46 L6: INC si
|
||||||
|
022 JMP L1 ;Synthetic inst
|
||||||
|
|
||||||
|
023 0008DC 8BD8 L4: MOV bx, ax
|
||||||
|
024 0008DE D1E3 SHL bx, 1
|
||||||
|
025 0008E0 2EFFA73500 JMP word ptr cs:[bx+35h];Switch
|
||||||
|
|
||||||
|
026 0008F1 16 PUSH ss ;Case l0
|
||||||
|
027 0008F2 8D4690 LEA ax, [bp-70h]
|
||||||
|
028 0008F5 50 PUSH ax
|
||||||
|
029 0008F6 16 PUSH ss
|
||||||
|
030 0008F7 8D862CFF LEA ax, [bp-0D4h]
|
||||||
|
031 0008FB 50 PUSH ax
|
||||||
|
032 0008FC 9AC2038B00 CALL far ptr proc_1
|
||||||
|
033 000901 83C408 ADD sp, 8
|
||||||
|
034 000904 A31806 MOV [618h], ax
|
||||||
|
035 000907 FF361806 PUSH word ptr [618h]
|
||||||
|
036 00090B 1E PUSH ds
|
||||||
|
037 00090C B8A500 MOV ax, 0A5h
|
||||||
|
038 00090F 50 PUSH ax
|
||||||
|
039 000910 9A02000E05 CALL far ptr printf
|
||||||
|
040 000915 83C406 ADD sp, 6
|
||||||
|
041 000918 E93A01 JMP L6
|
||||||
|
|
||||||
|
042 00091B 9A1E058B00 CALL far ptr proc_4 ;Case l1
|
||||||
|
043 000920 A31A06 MOV [61Ah], ax
|
||||||
|
044 000923 FF361A06 PUSH word ptr [61Ah]
|
||||||
|
045 000927 1E PUSH ds
|
||||||
|
046 000928 B8B400 MOV ax, 0B4h
|
||||||
|
047 00092B 50 PUSH ax
|
||||||
|
048 00092C 9A02000E05 CALL far ptr printf
|
||||||
|
049 000931 83C406 ADD sp, 6
|
||||||
|
050 000934 E91E01 JMP L6
|
||||||
|
|
||||||
|
051 000937 B81800 MOV ax, 18h ;Case l2
|
||||||
|
052 00093A 50 PUSH ax
|
||||||
|
053 00093B 9A90038B00 CALL far ptr proc_5
|
||||||
|
054 000940 59 POP cx
|
||||||
|
055 000941 A31E06 MOV [61Eh], ax
|
||||||
|
056 000944 FF361E06 PUSH word ptr [61Eh]
|
||||||
|
057 000948 1E PUSH ds
|
||||||
|
058 000949 B8C300 MOV ax, 0C3h
|
||||||
|
059 00094C 50 PUSH ax
|
||||||
|
060 00094D 9A02000E05 CALL far ptr printf
|
||||||
|
061 000952 83C406 ADD sp, 6
|
||||||
|
062 000955 E9FD00 JMP L6
|
||||||
|
|
||||||
|
063 000958 C746F60000 MOV word ptr [bp-0Ah], 0;Case l3
|
||||||
|
064 00095D C746F40000 MOV word ptr [bp-0Ch], 0
|
||||||
|
065 000962 FF76F6 PUSH word ptr [bp-0Ah]
|
||||||
|
066 000965 FF76F4 PUSH word ptr [bp-0Ch]
|
||||||
|
067 000968 9AC4018B00 CALL far ptr proc_6
|
||||||
|
068 00096D 59 POP cx
|
||||||
|
069 00096E 59 POP cx
|
||||||
|
070 00096F 89162206 MOV [622h], dx
|
||||||
|
071 000973 A32006 MOV [620h], ax
|
||||||
|
072 000976 FF362206 PUSH word ptr [622h]
|
||||||
|
073 00097A FF362006 PUSH word ptr [620h]
|
||||||
|
074 00097E 9AC4018B00 CALL far ptr proc_6
|
||||||
|
075 000983 59 POP cx
|
||||||
|
076 000984 59 POP cx
|
||||||
|
077 000985 8956F6 MOV [bp-0Ah], dx
|
||||||
|
078 000988 8946F4 MOV [bp-0Ch], ax
|
||||||
|
079 00098B FF362206 PUSH word ptr [622h]
|
||||||
|
080 00098F FF362006 PUSH word ptr [620h]
|
||||||
|
081 000993 1E PUSH ds
|
||||||
|
082 000994 B8D200 MOV ax, 0D2h
|
||||||
|
083 000997 50 PUSH ax
|
||||||
|
084 000998 9A02000E05 CALL far ptr printf
|
||||||
|
085 00099D 83C408 ADD sp, 8
|
||||||
|
086 0009A0 FF76F6 PUSH word ptr [bp-0Ah]
|
||||||
|
087 0009A3 FF76F4 PUSH word ptr [bp-0Ch]
|
||||||
|
088 0009A6 1E PUSH ds
|
||||||
|
089 0009A7 B8E100 MOV ax, 0E1h
|
||||||
|
090 0009AA 50 PUSH ax
|
||||||
|
091 0009AB 9A02000E05 CALL far ptr printf
|
||||||
|
092 0009B0 83C408 ADD sp, 8
|
||||||
|
093 0009B3 E99F00 JMP L6
|
||||||
|
|
||||||
|
094 0009B6 8B162206 MOV dx, [622h] ;Case l4
|
||||||
|
095 0009BA A12006 MOV ax, [620h]
|
||||||
|
096 0009BD 52 PUSH dx
|
||||||
|
097 0009BE 50 PUSH ax
|
||||||
|
098 0009BF CD378626FF ESC FILD [bp-0DAh]
|
||||||
|
099 0009C4 CD3D INT 3Dh /* Unknown int */
|
||||||
|
|
||||||
|
100 0009C6 83C404 ADD sp, 4
|
||||||
|
101 0009C9 83EC08 SUB sp, 8
|
||||||
|
102 0009CC CD399E22FF ESC FSTP [bp-0DEh]
|
||||||
|
103 0009D1 CD3D INT 3Dh /* Unknown int */
|
||||||
|
|
||||||
|
104 0009D3 9A21028B00 CALL far ptr proc_7
|
||||||
|
105 0009D8 83C408 ADD sp, 8
|
||||||
|
106 0009DB CD391E2406 ESC FSTP [624h]
|
||||||
|
107 0009E0 CD3D INT 3Dh /* Unknown int */
|
||||||
|
|
||||||
|
108 0009E2 FF362A06 PUSH word ptr [62Ah]
|
||||||
|
109 0009E6 FF362806 PUSH word ptr [628h]
|
||||||
|
110 0009EA FF362606 PUSH word ptr [626h]
|
||||||
|
111 0009EE FF362406 PUSH word ptr [624h]
|
||||||
|
112 0009F2 1E PUSH ds
|
||||||
|
113 0009F3 B8F100 MOV ax, 0F1h
|
||||||
|
114 0009F6 50 PUSH ax
|
||||||
|
115 0009F7 9A02000E05 CALL far ptr printf
|
||||||
|
116 0009FC 83C40C ADD sp, 0Ch
|
||||||
|
117 0009FF FF362A06 PUSH word ptr [62Ah]
|
||||||
|
118 000A03 FF362806 PUSH word ptr [628h]
|
||||||
|
119 000A07 FF362606 PUSH word ptr [626h]
|
||||||
|
120 000A0B FF362406 PUSH word ptr [624h]
|
||||||
|
121 000A0F 9AE6028B00 CALL far ptr proc_9
|
||||||
|
122 000A14 83C408 ADD sp, 8
|
||||||
|
123 000A17 CD395EF8 ESC FSTP [bp-8]
|
||||||
|
124 000A1B CD3D INT 3Dh /* Unknown int */
|
||||||
|
|
||||||
|
125 000A1D FF76FE PUSH word ptr [bp-2]
|
||||||
|
126 000A20 FF76FC PUSH word ptr [bp-4]
|
||||||
|
127 000A23 FF76FA PUSH word ptr [bp-6]
|
||||||
|
128 000A26 FF76F8 PUSH word ptr [bp-8]
|
||||||
|
129 000A29 1E PUSH ds
|
||||||
|
130 000A2A B80001 MOV ax, 100h
|
||||||
|
131 000A2D 50 PUSH ax
|
||||||
|
132 000A2E 9A02000E05 CALL far ptr printf
|
||||||
|
133 000A33 83C40C ADD sp, 0Ch
|
||||||
|
134 000A36 EB1D JMP L6
|
||||||
|
|
||||||
|
135 000A38 9A73048B00 CALL far ptr proc_10 ;Case l5
|
||||||
|
136 000A3D A31C06 MOV [61Ch], ax
|
||||||
|
137 000A40 FF361C06 PUSH word ptr [61Ch]
|
||||||
|
138 000A44 1E PUSH ds
|
||||||
|
139 000A45 B80E01 MOV ax, 10Eh
|
||||||
|
140 000A48 50 PUSH ax
|
||||||
|
141 000A49 9A02000E05 CALL far ptr printf
|
||||||
|
142 000A4E 83C406 ADD sp, 6
|
||||||
|
143 000A51 EB02 JMP L6
|
||||||
|
|
||||||
|
144 000A5E B80700 L2: MOV ax, 7
|
||||||
|
145 000A61 50 PUSH ax
|
||||||
|
146 000A62 1E PUSH ds
|
||||||
|
147 000A63 B81C01 MOV ax, 11Ch
|
||||||
|
148 000A66 50 PUSH ax
|
||||||
|
149 000A67 9A02000E05 CALL far ptr printf
|
||||||
|
150 000A6C 83C406 ADD sp, 6
|
||||||
|
151 000A6F 5E POP si
|
||||||
|
152 000A70 8BE5 MOV sp, bp
|
||||||
|
153 000A72 5D POP bp
|
||||||
|
154 000A73 CB RETF
|
||||||
|
|
||||||
|
main ENDP
|
||||||
|
|
||||||
|
proc_1 PROC FAR
|
||||||
|
000 000C72 55 PUSH bp
|
||||||
|
001 000C73 8BEC MOV bp, sp
|
||||||
|
002 000C75 56 PUSH si
|
||||||
|
003 000C76 57 PUSH di
|
||||||
|
004 000C77 33F6 XOR si, si
|
||||||
|
005 000C79 33FF XOR di, di
|
||||||
|
006 000C7B EB3D JMP L7
|
||||||
|
|
||||||
|
007 000CBA 81FE2823 L7: CMP si, 2328h
|
||||||
|
008 000CBE 7CBD JL L8
|
||||||
|
009 000CC0 8BC7 MOV ax, di
|
||||||
|
010 000CC2 EB00 JMP L9
|
||||||
|
|
||||||
|
011 000CC4 5F L9: POP di
|
||||||
|
012 000CC5 5E POP si
|
||||||
|
013 000CC6 5D POP bp
|
||||||
|
014 000CC7 CB RETF
|
||||||
|
|
||||||
|
015 000C7D 1E L8: PUSH ds
|
||||||
|
016 000C7E B83701 MOV ax, 137h
|
||||||
|
017 000C81 50 PUSH ax
|
||||||
|
018 000C82 FF7608 PUSH word ptr [bp+8]
|
||||||
|
019 000C85 FF7606 PUSH word ptr [bp+6]
|
||||||
|
020 000C88 9A56048B00 CALL far ptr proc_2
|
||||||
|
021 000C8D 83C408 ADD sp, 8
|
||||||
|
022 000C90 1E PUSH ds
|
||||||
|
023 000C91 B84801 MOV ax, 148h
|
||||||
|
024 000C94 50 PUSH ax
|
||||||
|
025 000C95 FF760C PUSH word ptr [bp+0Ch]
|
||||||
|
026 000C98 FF760A PUSH word ptr [bp+0Ah]
|
||||||
|
027 000C9B 9A56048B00 CALL far ptr proc_2
|
||||||
|
028 000CA0 83C408 ADD sp, 8
|
||||||
|
029 000CA3 FF760C PUSH word ptr [bp+0Ch]
|
||||||
|
030 000CA6 FF760A PUSH word ptr [bp+0Ah]
|
||||||
|
031 000CA9 FF7608 PUSH word ptr [bp+8]
|
||||||
|
032 000CAC FF7606 PUSH word ptr [bp+6]
|
||||||
|
033 000CAF 9A18048B00 CALL far ptr proc_3
|
||||||
|
034 000CB4 83C408 ADD sp, 8
|
||||||
|
035 000CB7 03F8 ADD di, ax
|
||||||
|
036 000CB9 46 INC si
|
||||||
|
037 JMP L7 ;Synthetic inst
|
||||||
|
|
||||||
|
proc_1 ENDP
|
||||||
|
|
||||||
|
proc_2 PROC FAR
|
||||||
|
000 000D06 55 PUSH bp
|
||||||
|
001 000D07 8BEC MOV bp, sp
|
||||||
|
002 000D09 EB00 JMP L10
|
||||||
|
|
||||||
|
003 000D0B C45E0A L10: LES bx, dword ptr[bp+0Ah]
|
||||||
|
004 000D0E FF460A INC word ptr [bp+0Ah]
|
||||||
|
005 000D11 268A07 MOV al, es:[bx]
|
||||||
|
006 000D14 C45E06 LES bx, dword ptr[bp+6]
|
||||||
|
007 000D17 FF4606 INC word ptr [bp+6]
|
||||||
|
008 000D1A 268807 MOV es:[bx], al
|
||||||
|
009 000D1D 0AC0 OR al, al
|
||||||
|
010 000D1F 75EA JNE L10
|
||||||
|
011 000D21 5D POP bp
|
||||||
|
012 000D22 CB RETF
|
||||||
|
|
||||||
|
proc_2 ENDP
|
||||||
|
|
||||||
|
proc_3 PROC FAR
|
||||||
|
000 000CC8 55 PUSH bp
|
||||||
|
001 000CC9 8BEC MOV bp, sp
|
||||||
|
002 000CCB EB13 JMP L11
|
||||||
|
|
||||||
|
003 000CE0 C45E06 L11: LES bx, dword ptr[bp+6]
|
||||||
|
004 000CE3 268A07 MOV al, es:[bx]
|
||||||
|
005 000CE6 C45E0A LES bx, dword ptr[bp+0Ah]
|
||||||
|
006 000CE9 263A07 CMP al, es:[bx]
|
||||||
|
007 000CEC 74DF JE L12
|
||||||
|
008 000CEE C45E06 LES bx, dword ptr[bp+6]
|
||||||
|
009 000CF1 268A07 MOV al, es:[bx]
|
||||||
|
010 000CF4 98 CWD
|
||||||
|
011 000CF5 C45E0A LES bx, dword ptr[bp+0Ah]
|
||||||
|
012 000CF8 50 PUSH ax
|
||||||
|
013 000CF9 268A07 MOV al, es:[bx]
|
||||||
|
014 000CFC 98 CWD
|
||||||
|
015 000CFD 8BD0 MOV dx, ax
|
||||||
|
016 000CFF 58 POP ax
|
||||||
|
017 000D00 2BC2 SUB ax, dx
|
||||||
|
018 000D02 EB00 JMP L13
|
||||||
|
|
||||||
|
019 000D04 5D L13: POP bp
|
||||||
|
020 000D05 CB RETF
|
||||||
|
|
||||||
|
021 000CCD C45E06 L12: LES bx, dword ptr[bp+6]
|
||||||
|
022 000CD0 26803F00 CMP byte ptr es:[bx], 0
|
||||||
|
023 000CD4 7504 JNE L14
|
||||||
|
024 000CD6 33C0 XOR ax, ax
|
||||||
|
025 000CD8 EB2A JMP L13
|
||||||
|
|
||||||
|
026 000CDA FF4606 L14: INC word ptr [bp+6]
|
||||||
|
027 000CDD FF460A INC word ptr [bp+0Ah]
|
||||||
|
028 JMP L11 ;Synthetic inst
|
||||||
|
|
||||||
|
proc_3 ENDP
|
||||||
|
|
||||||
|
proc_4 PROC FAR
|
||||||
|
000 000DCE 55 PUSH bp
|
||||||
|
001 000DCF 8BEC MOV bp, sp
|
||||||
|
002 000DD1 83EC04 SUB sp, 4
|
||||||
|
003 000DD4 56 PUSH si
|
||||||
|
004 000DD5 57 PUSH di
|
||||||
|
005 000DD6 33F6 XOR si, si
|
||||||
|
006 000DD8 EB20 JMP L15
|
||||||
|
|
||||||
|
007 000DFA 81FEE803 L15: CMP si, 3E8h
|
||||||
|
008 000DFE 7CDA JL L16
|
||||||
|
009 000E00 8B46FE MOV ax, [bp-2]
|
||||||
|
010 000E03 EB00 JMP L17
|
||||||
|
|
||||||
|
011 000E05 5F L17: POP di
|
||||||
|
012 000E06 5E POP si
|
||||||
|
013 000E07 8BE5 MOV sp, bp
|
||||||
|
014 000E09 5D POP bp
|
||||||
|
015 000E0A CB RETF
|
||||||
|
|
||||||
|
016 000DDA C746FE0000 L16: MOV word ptr [bp-2], 0
|
||||||
|
017 000DDF 33FF XOR di, di
|
||||||
|
018 000DE1 C746FC0100 MOV word ptr [bp-4], 1
|
||||||
|
019 000DE6 EB0B JMP L18
|
||||||
|
|
||||||
|
020 000DF3 81FFB300 L18: CMP di, 0B3h
|
||||||
|
021 000DF7 7CEF JL L19
|
||||||
|
022 000DF9 46 INC si
|
||||||
|
023 JMP L15 ;Synthetic inst
|
||||||
|
|
||||||
|
024 000DE8 8B46FC L19: MOV ax, [bp-4]
|
||||||
|
025 000DEB 0146FE ADD [bp-2], ax
|
||||||
|
026 000DEE 8346FC02 ADD word ptr [bp-4], 2
|
||||||
|
027 000DF2 47 INC di
|
||||||
|
028 JMP L18 ;Synthetic inst
|
||||||
|
|
||||||
|
proc_4 ENDP
|
||||||
|
|
||||||
|
proc_5 PROC FAR
|
||||||
|
000 000C40 55 PUSH bp
|
||||||
|
001 000C41 8BEC MOV bp, sp
|
||||||
|
002 000C43 56 PUSH si
|
||||||
|
003 000C44 8B7606 MOV si, [bp+6]
|
||||||
|
004 000C47 83FE02 CMP si, 2
|
||||||
|
005 000C4A 7E1E JLE L20
|
||||||
|
006 000C4C 8BC6 MOV ax, si
|
||||||
|
007 000C4E 48 DEC ax
|
||||||
|
008 000C4F 50 PUSH ax
|
||||||
|
009 000C50 0E PUSH cs
|
||||||
|
010 000C51 E8ECFF CALL near ptr proc_5
|
||||||
|
011 000C54 59 POP cx
|
||||||
|
012 000C55 50 PUSH ax
|
||||||
|
013 000C56 8BC6 MOV ax, si
|
||||||
|
014 000C58 05FEFF ADD ax, 0FFFEh
|
||||||
|
015 000C5B 50 PUSH ax
|
||||||
|
016 000C5C 0E PUSH cs
|
||||||
|
017 000C5D E8E0FF CALL near ptr proc_5
|
||||||
|
018 000C60 59 POP cx
|
||||||
|
019 000C61 8BD0 MOV dx, ax
|
||||||
|
020 000C63 58 POP ax
|
||||||
|
021 000C64 03C2 ADD ax, dx
|
||||||
|
022 000C66 EB07 JMP L21
|
||||||
|
|
||||||
|
023 000C6F 5E L21: POP si
|
||||||
|
024 000C70 5D POP bp
|
||||||
|
025 000C71 CB RETF
|
||||||
|
|
||||||
|
026 000C6A B80100 L20: MOV ax, 1
|
||||||
|
027 000C6D EB00 JMP L21
|
||||||
|
|
||||||
|
proc_5 ENDP
|
||||||
|
|
||||||
|
proc_6 PROC FAR
|
||||||
|
000 000A74 55 PUSH bp
|
||||||
|
001 000A75 8BEC MOV bp, sp
|
||||||
|
002 000A77 56 PUSH si
|
||||||
|
003 000A78 8B4606 MOV ax, [bp+6]
|
||||||
|
004 000A7B 0B4608 OR ax, [bp+8]
|
||||||
|
005 000A7E 7524 JNE L22
|
||||||
|
006 000A80 33F6 XOR si, si
|
||||||
|
007 000A82 EB18 JMP L23
|
||||||
|
|
||||||
|
008 000A9C 81FE2823 L23: CMP si, 2328h
|
||||||
|
009 000AA0 7CE2 JL L24
|
||||||
|
010 000AA2 EB22 JMP L25
|
||||||
|
|
||||||
|
011 000AC6 8B5608 L25: MOV dx, [bp+8]
|
||||||
|
012 000AC9 8B4606 MOV ax, [bp+6]
|
||||||
|
013 000ACC EB00 JMP L26
|
||||||
|
|
||||||
|
014 000ACE 5E L26: POP si
|
||||||
|
015 000ACF 5D POP bp
|
||||||
|
016 000AD0 CB RETF
|
||||||
|
|
||||||
|
017 000A84 8B169600 L24: MOV dx, [96h]
|
||||||
|
018 000A88 A19400 MOV ax, [94h]
|
||||||
|
019 000A8B 014606 ADD [bp+6], ax
|
||||||
|
020 000A8E 115608 ADC [bp+8], dx
|
||||||
|
021 000A91 8306940002 ADD word ptr [94h], 2
|
||||||
|
022 000A96 8316960000 ADC word ptr [96h], 0
|
||||||
|
023 000A9B 46 INC si
|
||||||
|
024 JMP L23 ;Synthetic inst
|
||||||
|
|
||||||
|
025 000AA4 33F6 L22: XOR si, si
|
||||||
|
026 000AA6 EB18 JMP L27
|
||||||
|
|
||||||
|
027 000AC0 81FE2823 L27: CMP si, 2328h
|
||||||
|
028 000AC4 7CE2 JL L28
|
||||||
|
029 JMP L25 ;Synthetic inst
|
||||||
|
|
||||||
|
030 000AA8 832E940002 L28: SUB word ptr [94h], 2
|
||||||
|
031 000AAD 831E960000 SBB word ptr [96h], 0
|
||||||
|
032 000AB2 8B169600 MOV dx, [96h]
|
||||||
|
033 000AB6 A19400 MOV ax, [94h]
|
||||||
|
034 000AB9 294606 SUB [bp+6], ax
|
||||||
|
035 000ABC 195608 SBB [bp+8], dx
|
||||||
|
036 000ABF 46 INC si
|
||||||
|
037 JMP L27 ;Synthetic inst
|
||||||
|
|
||||||
|
proc_6 ENDP
|
||||||
|
|
||||||
|
proc_7 PROC FAR
|
||||||
|
000 000AD1 55 PUSH bp
|
||||||
|
001 000AD2 8BEC MOV bp, sp
|
||||||
|
002 000AD4 83EC10 SUB sp, 10h
|
||||||
|
003 000AD7 CD394606 ESC FLD [bp+6]
|
||||||
|
004 000ADB CD38362701 ESC FDIV [127h]
|
||||||
|
005 000AE0 CD395EF8 ESC FSTP [bp-8]
|
||||||
|
006 000AE4 CD3D INT 3Dh /* Unknown int */
|
||||||
|
|
||||||
|
007 000AE6 8B460C MOV ax, [bp+0Ch]
|
||||||
|
008 000AE9 8946F6 MOV [bp-0Ah], ax
|
||||||
|
009 000AEC 8B460A MOV ax, [bp+0Ah]
|
||||||
|
010 000AEF 8946F4 MOV [bp-0Ch], ax
|
||||||
|
011 000AF2 8B4608 MOV ax, [bp+8]
|
||||||
|
012 000AF5 8946F2 MOV [bp-0Eh], ax
|
||||||
|
013 000AF8 8B4606 MOV ax, [bp+6]
|
||||||
|
014 000AFB 8946F0 MOV [bp-10h], ax
|
||||||
|
015 000AFE EB43 JMP L29
|
||||||
|
|
||||||
|
016 000B43 CD39062F01 L29: ESC FLD [12Fh]
|
||||||
|
017 000B48 CD384EF8 ESC FMUL [bp-8]
|
||||||
|
018 000B4C CD385EF0 ESC FCOMP [bp-10h]
|
||||||
|
019 000B50 CD393E2C06 ESC FSTSW [62Ch]
|
||||||
|
020 000B55 CD3D INT 3Dh /* Unknown int */
|
||||||
|
|
||||||
|
021 000B57 8A262D06 MOV ah, [62Dh]
|
||||||
|
022 000B5B 9E SAHF
|
||||||
|
023 000B5C 72A2 JB L30
|
||||||
|
024 000B5E CD3946F8 ESC FLD [bp-8]
|
||||||
|
025 000B62 EB00 JMP L31
|
||||||
|
|
||||||
|
026 000B64 8BE5 L31: MOV sp, bp
|
||||||
|
027 000B66 5D POP bp
|
||||||
|
028 000B67 CB RETF
|
||||||
|
|
||||||
|
029 000B00 CD394606 L30: ESC FLD [bp+6]
|
||||||
|
030 000B04 CD3876F8 ESC FDIV [bp-8]
|
||||||
|
031 000B08 CD3866F8 ESC FSUB [bp-8]
|
||||||
|
032 000B0C CD395EF0 ESC FSTP [bp-10h]
|
||||||
|
033 000B10 CD3D INT 3Dh /* Unknown int */
|
||||||
|
|
||||||
|
034 000B12 FF76F6 PUSH word ptr [bp-0Ah]
|
||||||
|
035 000B15 FF76F4 PUSH word ptr [bp-0Ch]
|
||||||
|
036 000B18 FF76F2 PUSH word ptr [bp-0Eh]
|
||||||
|
037 000B1B FF76F0 PUSH word ptr [bp-10h]
|
||||||
|
038 000B1E 9AB8028B00 CALL far ptr proc_8
|
||||||
|
039 000B23 83C408 ADD sp, 8
|
||||||
|
040 000B26 CD395EF0 ESC FSTP [bp-10h]
|
||||||
|
041 000B2A CD3D INT 3Dh /* Unknown int */
|
||||||
|
|
||||||
|
042 000B2C CD394606 ESC FLD [bp+6]
|
||||||
|
043 000B30 CD3876F8 ESC FDIV [bp-8]
|
||||||
|
044 000B34 CD3846F8 ESC FADD [bp-8]
|
||||||
|
045 000B38 CD38362701 ESC FDIV [127h]
|
||||||
|
046 000B3D CD395EF8 ESC FSTP [bp-8]
|
||||||
|
047 000B41 CD3D INT 3Dh /* Unknown int */
|
||||||
|
|
||||||
|
048 JMP L29 ;Synthetic inst
|
||||||
|
|
||||||
|
proc_7 ENDP
|
||||||
|
|
||||||
|
proc_8 PROC FAR
|
||||||
|
000 000B68 55 PUSH bp
|
||||||
|
001 000B69 8BEC MOV bp, sp
|
||||||
|
002 000B6B CD39062601 ESC FLD [126h]
|
||||||
|
003 000B70 CD394606 ESC FLD [bp+6]
|
||||||
|
004 000B74 CD3AD9 ESC FCOMPP
|
||||||
|
005 000B77 CD393E2C06 ESC FSTSW [62Ch]
|
||||||
|
006 000B7C CD3D INT 3Dh /* Unknown int */
|
||||||
|
|
||||||
|
007 000B7E 8A262D06 MOV ah, [62Dh]
|
||||||
|
008 000B82 9E SAHF
|
||||||
|
009 000B83 7309 JAE L32
|
||||||
|
010 000B85 CD394606 ESC FLD [bp+6]
|
||||||
|
011 000B89 CD35E0 ESC FCHS
|
||||||
|
012 000B8C EB04 JMP L33
|
||||||
|
|
||||||
|
013 000B92 EB00 L33: JMP L34
|
||||||
|
|
||||||
|
014 000B94 5D L34: POP bp
|
||||||
|
015 000B95 CB RETF
|
||||||
|
|
||||||
|
016 000B8E CD394606 L32: ESC FLD [bp+6]
|
||||||
|
017 JMP L33 ;Synthetic inst
|
||||||
|
|
||||||
|
proc_8 ENDP
|
||||||
|
|
||||||
|
proc_9 PROC FAR
|
||||||
|
000 000B96 55 PUSH bp
|
||||||
|
001 000B97 8BEC MOV bp, sp
|
||||||
|
002 000B99 83EC08 SUB sp, 8
|
||||||
|
003 000B9C 56 PUSH si
|
||||||
|
004 000B9D BE6400 MOV si, 64h
|
||||||
|
005 000BA0 E98800 JMP L35
|
||||||
|
|
||||||
|
006 000C2B 8BC6 L35: MOV ax, si
|
||||||
|
007 000C2D 4E DEC si
|
||||||
|
008 000C2E 0BC0 OR ax, ax
|
||||||
|
009 000C30 7403 JE L36
|
||||||
|
010 000C32 E96EFF JMP L37
|
||||||
|
|
||||||
|
011 000BA3 CD394606 L37: ESC FLD [bp+6]
|
||||||
|
012 000BA7 CD384E06 ESC FMUL [bp+6]
|
||||||
|
013 000BAB CD384E06 ESC FMUL [bp+6]
|
||||||
|
014 000BAF CD384E06 ESC FMUL [bp+6]
|
||||||
|
015 000BB3 CD384E06 ESC FMUL [bp+6]
|
||||||
|
016 000BB7 CD384E06 ESC FMUL [bp+6]
|
||||||
|
017 000BBB CD384E06 ESC FMUL [bp+6]
|
||||||
|
018 000BBF CD395EF8 ESC FSTP [bp-8]
|
||||||
|
019 000BC3 CD3D INT 3Dh /* Unknown int */
|
||||||
|
|
||||||
|
020 000BC5 CD3946F8 ESC FLD [bp-8]
|
||||||
|
021 000BC9 CD387606 ESC FDIV [bp+6]
|
||||||
|
022 000BCD CD387606 ESC FDIV [bp+6]
|
||||||
|
023 000BD1 CD387606 ESC FDIV [bp+6]
|
||||||
|
024 000BD5 CD387606 ESC FDIV [bp+6]
|
||||||
|
025 000BD9 CD387606 ESC FDIV [bp+6]
|
||||||
|
026 000BDD CD387606 ESC FDIV [bp+6]
|
||||||
|
027 000BE1 CD395EF8 ESC FSTP [bp-8]
|
||||||
|
028 000BE5 CD3D INT 3Dh /* Unknown int */
|
||||||
|
|
||||||
|
029 000BE7 CD3946F8 ESC FLD [bp-8]
|
||||||
|
030 000BEB CD384606 ESC FADD [bp+6]
|
||||||
|
031 000BEF CD384606 ESC FADD [bp+6]
|
||||||
|
032 000BF3 CD384606 ESC FADD [bp+6]
|
||||||
|
033 000BF7 CD384606 ESC FADD [bp+6]
|
||||||
|
034 000BFB CD384606 ESC FADD [bp+6]
|
||||||
|
035 000BFF CD384606 ESC FADD [bp+6]
|
||||||
|
036 000C03 CD395EF8 ESC FSTP [bp-8]
|
||||||
|
037 000C07 CD3D INT 3Dh /* Unknown int */
|
||||||
|
|
||||||
|
038 000C09 CD3946F8 ESC FLD [bp-8]
|
||||||
|
039 000C0D CD386606 ESC FSUB [bp+6]
|
||||||
|
040 000C11 CD386606 ESC FSUB [bp+6]
|
||||||
|
041 000C15 CD386606 ESC FSUB [bp+6]
|
||||||
|
042 000C19 CD386606 ESC FSUB [bp+6]
|
||||||
|
043 000C1D CD386606 ESC FSUB [bp+6]
|
||||||
|
044 000C21 CD386606 ESC FSUB [bp+6]
|
||||||
|
045 000C25 CD395EF8 ESC FSTP [bp-8]
|
||||||
|
046 000C29 CD3D INT 3Dh /* Unknown int */
|
||||||
|
|
||||||
|
047 JMP L35 ;Synthetic inst
|
||||||
|
|
||||||
|
048 000C35 CD3946F8 L36: ESC FLD [bp-8]
|
||||||
|
049 000C39 EB00 JMP L38
|
||||||
|
|
||||||
|
050 000C3B 5E L38: POP si
|
||||||
|
051 000C3C 8BE5 MOV sp, bp
|
||||||
|
052 000C3E 5D POP bp
|
||||||
|
053 000C3F CB RETF
|
||||||
|
|
||||||
|
proc_9 ENDP
|
||||||
|
|
||||||
|
proc_10 PROC FAR
|
||||||
|
000 000D23 55 PUSH bp
|
||||||
|
001 000D24 8BEC MOV bp, sp
|
||||||
|
002 000D26 83EC68 SUB sp, 68h
|
||||||
|
003 000D29 56 PUSH si
|
||||||
|
004 000D2A 57 PUSH di
|
||||||
|
005 000D2B 1E PUSH ds
|
||||||
|
006 000D2C B85901 MOV ax, 159h
|
||||||
|
007 000D2F 50 PUSH ax
|
||||||
|
008 000D30 16 PUSH ss
|
||||||
|
009 000D31 8D469C LEA ax, [bp-64h]
|
||||||
|
010 000D34 50 PUSH ax
|
||||||
|
011 000D35 0E PUSH cs
|
||||||
|
012 000D36 E8CDFF CALL near ptr proc_2
|
||||||
|
013 000D39 83C408 ADD sp, 8
|
||||||
|
014 000D3C 1E PUSH ds
|
||||||
|
015 000D3D B87001 MOV ax, 170h
|
||||||
|
016 000D40 50 PUSH ax
|
||||||
|
017 000D41 1E PUSH ds
|
||||||
|
018 000D42 B86701 MOV ax, 167h
|
||||||
|
019 000D45 50 PUSH ax
|
||||||
|
020 000D46 9A24022904 CALL far ptr fopen
|
||||||
|
021 000D4B 83C408 ADD sp, 8
|
||||||
|
022 000D4E 89569A MOV [bp-66h], dx
|
||||||
|
023 000D51 894698 MOV [bp-68h], ax
|
||||||
|
024 000D54 0BD0 OR dx, ax
|
||||||
|
025 000D56 7516 JNE L39
|
||||||
|
026 000D58 1E PUSH ds
|
||||||
|
027 000D59 B87201 MOV ax, 172h
|
||||||
|
028 000D5C 50 PUSH ax
|
||||||
|
029 000D5D 9A02000E05 CALL far ptr printf
|
||||||
|
030 000D62 59 POP cx
|
||||||
|
031 000D63 59 POP cx
|
||||||
|
032 000D64 B8FFFF MOV ax, 0FFFFh
|
||||||
|
033 000D67 50 PUSH ax
|
||||||
|
034 000D68 9A0200DA03 CALL far ptr exit
|
||||||
|
035 000D6D 59 POP cx
|
||||||
|
|
||||||
|
036 000D6E 33FF L39: XOR di, di
|
||||||
|
037 000D70 EB3D JMP L40
|
||||||
|
|
||||||
|
038 000DAF 47 L40: INC di
|
||||||
|
039 000DB0 8BC7 MOV ax, di
|
||||||
|
040 000DB2 3DE803 CMP ax, 3E8h
|
||||||
|
041 000DB5 7CBB JL L41
|
||||||
|
042 000DB7 FF769A PUSH word ptr [bp-66h]
|
||||||
|
043 000DBA FF7698 PUSH word ptr [bp-68h]
|
||||||
|
044 000DBD 9A0800A104 CALL far ptr fclose
|
||||||
|
045 000DC2 59 POP cx
|
||||||
|
046 000DC3 59 POP cx
|
||||||
|
047 000DC4 8BC7 MOV ax, di
|
||||||
|
048 000DC6 EB00 JMP L42
|
||||||
|
|
||||||
|
049 000DC8 5F L42: POP di
|
||||||
|
050 000DC9 5E POP si
|
||||||
|
051 000DCA 8BE5 MOV sp, bp
|
||||||
|
052 000DCC 5D POP bp
|
||||||
|
053 000DCD CB RETF
|
||||||
|
|
||||||
|
054 000D72 33F6 L41: XOR si, si
|
||||||
|
055 000D74 EB32 JMP L43
|
||||||
|
|
||||||
|
056 000DA8 36807A9C00 L43: CMP byte ptr ss:[bp+si-64h], 0
|
||||||
|
057 000DAD 75C7 JNE L44
|
||||||
|
058 JMP L40 ;Synthetic inst
|
||||||
|
|
||||||
|
059 000D76 C45E98 L44: LES bx, dword ptr[bp-68h]
|
||||||
|
060 000D79 26FF07 INC word ptr es:[bx]
|
||||||
|
061 000D7C 7D17 JGE L45
|
||||||
|
062 000D7E 368A429C MOV al, ss:[bp+si-64h]
|
||||||
|
063 000D82 C45E98 LES bx, dword ptr[bp-68h]
|
||||||
|
064 000D85 26FF470C INC word ptr es:[bx+0Ch]
|
||||||
|
065 000D89 26C45F0C LES bx, dword ptres:[bx+0Ch]
|
||||||
|
066 000D8D 4B DEC bx
|
||||||
|
067 000D8E 268807 MOV es:[bx], al
|
||||||
|
068 000D91 B400 MOV ah, 0
|
||||||
|
069 000D93 EB12 JMP L46
|
||||||
|
|
||||||
|
070 000DA7 46 L46: INC si
|
||||||
|
071 JMP L43 ;Synthetic inst
|
||||||
|
|
||||||
|
072 000D95 FF769A L45: PUSH word ptr [bp-66h]
|
||||||
|
073 000D98 FF7698 PUSH word ptr [bp-68h]
|
||||||
|
074 000D9B 36FF729C PUSH word ptr ss:[bp+si-64h]
|
||||||
|
075 000D9F 9A06001005 CALL far ptr _fputc
|
||||||
|
076 000DA4 83C406 ADD sp, 6
|
||||||
|
077 JMP L46 ;Synthetic inst
|
||||||
|
|
||||||
|
proc_10 ENDP
|
||||||
|
|
||||||
601
tests/prev_base/DHAMP.EXE.a2
Normal file
601
tests/prev_base/DHAMP.EXE.a2
Normal file
@ -0,0 +1,601 @@
|
|||||||
|
proc_10 PROC FAR
|
||||||
|
000 000D23 55 PUSH bp
|
||||||
|
001 000D24 8BEC MOV bp, sp
|
||||||
|
002 000D26 83EC68 SUB sp, 68h
|
||||||
|
003 000D29 56 PUSH si
|
||||||
|
004 000D2A 57 PUSH di
|
||||||
|
005 000D2B 1E PUSH ds
|
||||||
|
006 000D2C B85901 MOV ax, 159h
|
||||||
|
007 000D2F 50 PUSH ax
|
||||||
|
008 000D30 16 PUSH ss
|
||||||
|
009 000D31 8D469C LEA ax, [bp-64h]
|
||||||
|
010 000D34 50 PUSH ax
|
||||||
|
011 000D35 0E PUSH cs
|
||||||
|
012 000D36 E8CDFF CALL near ptr proc_2
|
||||||
|
013 000D39 83C408 ADD sp, 8
|
||||||
|
014 000D3C 1E PUSH ds
|
||||||
|
015 000D3D B87001 MOV ax, 170h
|
||||||
|
016 000D40 50 PUSH ax
|
||||||
|
017 000D41 1E PUSH ds
|
||||||
|
018 000D42 B86701 MOV ax, 167h
|
||||||
|
019 000D45 50 PUSH ax
|
||||||
|
020 000D46 9A24022904 CALL far ptr fopen
|
||||||
|
021 000D4B 83C408 ADD sp, 8
|
||||||
|
022 000D4E 89569A MOV [bp-66h], dx
|
||||||
|
023 000D51 894698 MOV [bp-68h], ax
|
||||||
|
024 000D54 0BD0 OR dx, ax
|
||||||
|
025 000D56 7516 JNE L1
|
||||||
|
026 000D58 1E PUSH ds
|
||||||
|
027 000D59 B87201 MOV ax, 172h
|
||||||
|
028 000D5C 50 PUSH ax
|
||||||
|
029 000D5D 9A02000E05 CALL far ptr printf
|
||||||
|
030 000D62 59 POP cx
|
||||||
|
031 000D63 59 POP cx
|
||||||
|
032 000D64 B8FFFF MOV ax, 0FFFFh
|
||||||
|
033 000D67 50 PUSH ax
|
||||||
|
034 000D68 9A0200DA03 CALL far ptr exit
|
||||||
|
035 000D6D 59 POP cx
|
||||||
|
|
||||||
|
036 000D6E 33FF L1: XOR di, di
|
||||||
|
|
||||||
|
038 000DAF 47 L2: INC di
|
||||||
|
039 000DB0 8BC7 MOV ax, di
|
||||||
|
040 000DB2 3DE803 CMP ax, 3E8h
|
||||||
|
041 000DB5 7CBB JL L3
|
||||||
|
042 000DB7 FF769A PUSH word ptr [bp-66h]
|
||||||
|
043 000DBA FF7698 PUSH word ptr [bp-68h]
|
||||||
|
044 000DBD 9A0800A104 CALL far ptr fclose
|
||||||
|
045 000DC2 59 POP cx
|
||||||
|
046 000DC3 59 POP cx
|
||||||
|
047 000DC4 8BC7 MOV ax, di
|
||||||
|
049 000DC8 5F POP di
|
||||||
|
050 000DC9 5E POP si
|
||||||
|
051 000DCA 8BE5 MOV sp, bp
|
||||||
|
052 000DCC 5D POP bp
|
||||||
|
053 000DCD CB RETF
|
||||||
|
|
||||||
|
054 000D72 33F6 L3: XOR si, si
|
||||||
|
|
||||||
|
056 000DA8 36807A9C00 L4: CMP byte ptr ss:[bp+si-64h], 0
|
||||||
|
057 000DAD 75C7 JNE L5
|
||||||
|
|
||||||
|
059 000D76 C45E98 L5: LES bx, dword ptr[bp-68h]
|
||||||
|
060 000D79 26FF07 INC word ptr es:[bx]
|
||||||
|
061 000D7C 7D17 JGE L6
|
||||||
|
062 000D7E 368A429C MOV al, ss:[bp+si-64h]
|
||||||
|
063 000D82 C45E98 LES bx, dword ptr[bp-68h]
|
||||||
|
064 000D85 26FF470C INC word ptr es:[bx+0Ch]
|
||||||
|
065 000D89 26C45F0C LES bx, dword ptres:[bx+0Ch]
|
||||||
|
066 000D8D 4B DEC bx
|
||||||
|
067 000D8E 268807 MOV es:[bx], al
|
||||||
|
068 000D91 B400 MOV ah, 0
|
||||||
|
|
||||||
|
070 000DA7 46 L7: INC si
|
||||||
|
071 JMP L4 ;Synthetic inst
|
||||||
|
|
||||||
|
072 000D95 FF769A L6: PUSH word ptr [bp-66h]
|
||||||
|
073 000D98 FF7698 PUSH word ptr [bp-68h]
|
||||||
|
074 000D9B 36FF729C PUSH word ptr ss:[bp+si-64h]
|
||||||
|
075 000D9F 9A06001005 CALL far ptr _fputc
|
||||||
|
076 000DA4 83C406 ADD sp, 6
|
||||||
|
077 JMP L7 ;Synthetic inst
|
||||||
|
|
||||||
|
proc_10 ENDP
|
||||||
|
|
||||||
|
proc_9 PROC FAR
|
||||||
|
000 000B96 55 PUSH bp
|
||||||
|
001 000B97 8BEC MOV bp, sp
|
||||||
|
002 000B99 83EC08 SUB sp, 8
|
||||||
|
003 000B9C 56 PUSH si
|
||||||
|
004 000B9D BE6400 MOV si, 64h
|
||||||
|
|
||||||
|
006 000C2B 8BC6 L8: MOV ax, si
|
||||||
|
007 000C2D 4E DEC si
|
||||||
|
008 000C2E 0BC0 OR ax, ax
|
||||||
|
009 000C30 7403 JE L9
|
||||||
|
|
||||||
|
011 000BA3 CD394606 L10: ESC FLD [bp+6]
|
||||||
|
012 000BA7 CD384E06 ESC FMUL [bp+6]
|
||||||
|
013 000BAB CD384E06 ESC FMUL [bp+6]
|
||||||
|
014 000BAF CD384E06 ESC FMUL [bp+6]
|
||||||
|
015 000BB3 CD384E06 ESC FMUL [bp+6]
|
||||||
|
016 000BB7 CD384E06 ESC FMUL [bp+6]
|
||||||
|
017 000BBB CD384E06 ESC FMUL [bp+6]
|
||||||
|
018 000BBF CD395EF8 ESC FSTP [bp-8]
|
||||||
|
019 000BC3 CD3D INT 3Dh /* Unknown int */
|
||||||
|
|
||||||
|
020 000BC5 CD3946F8 ESC FLD [bp-8]
|
||||||
|
021 000BC9 CD387606 ESC FDIV [bp+6]
|
||||||
|
022 000BCD CD387606 ESC FDIV [bp+6]
|
||||||
|
023 000BD1 CD387606 ESC FDIV [bp+6]
|
||||||
|
024 000BD5 CD387606 ESC FDIV [bp+6]
|
||||||
|
025 000BD9 CD387606 ESC FDIV [bp+6]
|
||||||
|
026 000BDD CD387606 ESC FDIV [bp+6]
|
||||||
|
027 000BE1 CD395EF8 ESC FSTP [bp-8]
|
||||||
|
028 000BE5 CD3D INT 3Dh /* Unknown int */
|
||||||
|
|
||||||
|
029 000BE7 CD3946F8 ESC FLD [bp-8]
|
||||||
|
030 000BEB CD384606 ESC FADD [bp+6]
|
||||||
|
031 000BEF CD384606 ESC FADD [bp+6]
|
||||||
|
032 000BF3 CD384606 ESC FADD [bp+6]
|
||||||
|
033 000BF7 CD384606 ESC FADD [bp+6]
|
||||||
|
034 000BFB CD384606 ESC FADD [bp+6]
|
||||||
|
035 000BFF CD384606 ESC FADD [bp+6]
|
||||||
|
036 000C03 CD395EF8 ESC FSTP [bp-8]
|
||||||
|
037 000C07 CD3D INT 3Dh /* Unknown int */
|
||||||
|
|
||||||
|
038 000C09 CD3946F8 ESC FLD [bp-8]
|
||||||
|
039 000C0D CD386606 ESC FSUB [bp+6]
|
||||||
|
040 000C11 CD386606 ESC FSUB [bp+6]
|
||||||
|
041 000C15 CD386606 ESC FSUB [bp+6]
|
||||||
|
042 000C19 CD386606 ESC FSUB [bp+6]
|
||||||
|
043 000C1D CD386606 ESC FSUB [bp+6]
|
||||||
|
044 000C21 CD386606 ESC FSUB [bp+6]
|
||||||
|
045 000C25 CD395EF8 ESC FSTP [bp-8]
|
||||||
|
046 000C29 CD3D INT 3Dh /* Unknown int */
|
||||||
|
|
||||||
|
047 JMP L8 ;Synthetic inst
|
||||||
|
|
||||||
|
048 000C35 CD3946F8 L9: ESC FLD [bp-8]
|
||||||
|
050 000C3B 5E POP si
|
||||||
|
051 000C3C 8BE5 MOV sp, bp
|
||||||
|
052 000C3E 5D POP bp
|
||||||
|
053 000C3F CB RETF
|
||||||
|
|
||||||
|
proc_9 ENDP
|
||||||
|
|
||||||
|
proc_8 PROC FAR
|
||||||
|
000 000B68 55 PUSH bp
|
||||||
|
001 000B69 8BEC MOV bp, sp
|
||||||
|
002 000B6B CD39062601 ESC FLD [126h]
|
||||||
|
003 000B70 CD394606 ESC FLD [bp+6]
|
||||||
|
004 000B74 CD3AD9 ESC FCOMPP
|
||||||
|
005 000B77 CD393E2C06 ESC FSTSW [62Ch]
|
||||||
|
006 000B7C CD3D INT 3Dh /* Unknown int */
|
||||||
|
|
||||||
|
007 000B7E 8A262D06 MOV ah, [62Dh]
|
||||||
|
008 000B82 9E SAHF
|
||||||
|
009 000B83 7309 JAE L11
|
||||||
|
010 000B85 CD394606 ESC FLD [bp+6]
|
||||||
|
011 000B89 CD35E0 ESC FCHS
|
||||||
|
|
||||||
|
014 000B94 5D L12: POP bp
|
||||||
|
015 000B95 CB RETF
|
||||||
|
|
||||||
|
016 000B8E CD394606 L11: ESC FLD [bp+6]
|
||||||
|
017 JMP L12 ;Synthetic inst
|
||||||
|
|
||||||
|
proc_8 ENDP
|
||||||
|
|
||||||
|
proc_7 PROC FAR
|
||||||
|
000 000AD1 55 PUSH bp
|
||||||
|
001 000AD2 8BEC MOV bp, sp
|
||||||
|
002 000AD4 83EC10 SUB sp, 10h
|
||||||
|
003 000AD7 CD394606 ESC FLD [bp+6]
|
||||||
|
004 000ADB CD38362701 ESC FDIV [127h]
|
||||||
|
005 000AE0 CD395EF8 ESC FSTP [bp-8]
|
||||||
|
006 000AE4 CD3D INT 3Dh /* Unknown int */
|
||||||
|
|
||||||
|
007 000AE6 8B460C MOV ax, [bp+0Ch]
|
||||||
|
008 000AE9 8946F6 MOV [bp-0Ah], ax
|
||||||
|
009 000AEC 8B460A MOV ax, [bp+0Ah]
|
||||||
|
010 000AEF 8946F4 MOV [bp-0Ch], ax
|
||||||
|
011 000AF2 8B4608 MOV ax, [bp+8]
|
||||||
|
012 000AF5 8946F2 MOV [bp-0Eh], ax
|
||||||
|
013 000AF8 8B4606 MOV ax, [bp+6]
|
||||||
|
014 000AFB 8946F0 MOV [bp-10h], ax
|
||||||
|
|
||||||
|
016 000B43 CD39062F01 L13: ESC FLD [12Fh]
|
||||||
|
017 000B48 CD384EF8 ESC FMUL [bp-8]
|
||||||
|
018 000B4C CD385EF0 ESC FCOMP [bp-10h]
|
||||||
|
019 000B50 CD393E2C06 ESC FSTSW [62Ch]
|
||||||
|
020 000B55 CD3D INT 3Dh /* Unknown int */
|
||||||
|
|
||||||
|
021 000B57 8A262D06 MOV ah, [62Dh]
|
||||||
|
022 000B5B 9E SAHF
|
||||||
|
023 000B5C 72A2 JB L14
|
||||||
|
024 000B5E CD3946F8 ESC FLD [bp-8]
|
||||||
|
026 000B64 8BE5 MOV sp, bp
|
||||||
|
027 000B66 5D POP bp
|
||||||
|
028 000B67 CB RETF
|
||||||
|
|
||||||
|
029 000B00 CD394606 L14: ESC FLD [bp+6]
|
||||||
|
030 000B04 CD3876F8 ESC FDIV [bp-8]
|
||||||
|
031 000B08 CD3866F8 ESC FSUB [bp-8]
|
||||||
|
032 000B0C CD395EF0 ESC FSTP [bp-10h]
|
||||||
|
033 000B10 CD3D INT 3Dh /* Unknown int */
|
||||||
|
|
||||||
|
034 000B12 FF76F6 PUSH word ptr [bp-0Ah]
|
||||||
|
035 000B15 FF76F4 PUSH word ptr [bp-0Ch]
|
||||||
|
036 000B18 FF76F2 PUSH word ptr [bp-0Eh]
|
||||||
|
037 000B1B FF76F0 PUSH word ptr [bp-10h]
|
||||||
|
038 000B1E 9AB8028B00 CALL far ptr proc_8
|
||||||
|
039 000B23 83C408 ADD sp, 8
|
||||||
|
040 000B26 CD395EF0 ESC FSTP [bp-10h]
|
||||||
|
041 000B2A CD3D INT 3Dh /* Unknown int */
|
||||||
|
|
||||||
|
042 000B2C CD394606 ESC FLD [bp+6]
|
||||||
|
043 000B30 CD3876F8 ESC FDIV [bp-8]
|
||||||
|
044 000B34 CD3846F8 ESC FADD [bp-8]
|
||||||
|
045 000B38 CD38362701 ESC FDIV [127h]
|
||||||
|
046 000B3D CD395EF8 ESC FSTP [bp-8]
|
||||||
|
047 000B41 CD3D INT 3Dh /* Unknown int */
|
||||||
|
|
||||||
|
048 JMP L13 ;Synthetic inst
|
||||||
|
|
||||||
|
proc_7 ENDP
|
||||||
|
|
||||||
|
proc_6 PROC FAR
|
||||||
|
000 000A74 55 PUSH bp
|
||||||
|
001 000A75 8BEC MOV bp, sp
|
||||||
|
002 000A77 56 PUSH si
|
||||||
|
003 000A78 8B4606 MOV ax, [bp+6]
|
||||||
|
004 000A7B 0B4608 OR ax, [bp+8]
|
||||||
|
005 000A7E 7524 JNE L15
|
||||||
|
006 000A80 33F6 XOR si, si
|
||||||
|
|
||||||
|
008 000A9C 81FE2823 L16: CMP si, 2328h
|
||||||
|
009 000AA0 7CE2 JL L17
|
||||||
|
|
||||||
|
011 000AC6 8B5608 L18: MOV dx, [bp+8]
|
||||||
|
012 000AC9 8B4606 MOV ax, [bp+6]
|
||||||
|
014 000ACE 5E POP si
|
||||||
|
015 000ACF 5D POP bp
|
||||||
|
016 000AD0 CB RETF
|
||||||
|
|
||||||
|
017 000A84 8B169600 L17: MOV dx, [96h]
|
||||||
|
018 000A88 A19400 MOV ax, [94h]
|
||||||
|
019 000A8B 014606 ADD [bp+6], ax
|
||||||
|
020 000A8E 115608 ADC [bp+8], dx
|
||||||
|
021 000A91 8306940002 ADD word ptr [94h], 2
|
||||||
|
022 000A96 8316960000 ADC word ptr [96h], 0
|
||||||
|
023 000A9B 46 INC si
|
||||||
|
024 JMP L16 ;Synthetic inst
|
||||||
|
|
||||||
|
025 000AA4 33F6 L15: XOR si, si
|
||||||
|
|
||||||
|
027 000AC0 81FE2823 L19: CMP si, 2328h
|
||||||
|
028 000AC4 7CE2 JL L20
|
||||||
|
|
||||||
|
030 000AA8 832E940002 L20: SUB word ptr [94h], 2
|
||||||
|
031 000AAD 831E960000 SBB word ptr [96h], 0
|
||||||
|
032 000AB2 8B169600 MOV dx, [96h]
|
||||||
|
033 000AB6 A19400 MOV ax, [94h]
|
||||||
|
034 000AB9 294606 SUB [bp+6], ax
|
||||||
|
035 000ABC 195608 SBB [bp+8], dx
|
||||||
|
036 000ABF 46 INC si
|
||||||
|
037 JMP L19 ;Synthetic inst
|
||||||
|
|
||||||
|
proc_6 ENDP
|
||||||
|
|
||||||
|
proc_5 PROC FAR
|
||||||
|
000 000C40 55 PUSH bp
|
||||||
|
001 000C41 8BEC MOV bp, sp
|
||||||
|
002 000C43 56 PUSH si
|
||||||
|
003 000C44 8B7606 MOV si, [bp+6]
|
||||||
|
004 000C47 83FE02 CMP si, 2
|
||||||
|
005 000C4A 7E1E JLE L21
|
||||||
|
006 000C4C 8BC6 MOV ax, si
|
||||||
|
007 000C4E 48 DEC ax
|
||||||
|
008 000C4F 50 PUSH ax
|
||||||
|
009 000C50 0E PUSH cs
|
||||||
|
010 000C51 E8ECFF CALL near ptr proc_5
|
||||||
|
011 000C54 59 POP cx
|
||||||
|
012 000C55 50 PUSH ax
|
||||||
|
013 000C56 8BC6 MOV ax, si
|
||||||
|
014 000C58 05FEFF ADD ax, 0FFFEh
|
||||||
|
015 000C5B 50 PUSH ax
|
||||||
|
016 000C5C 0E PUSH cs
|
||||||
|
017 000C5D E8E0FF CALL near ptr proc_5
|
||||||
|
018 000C60 59 POP cx
|
||||||
|
019 000C61 8BD0 MOV dx, ax
|
||||||
|
020 000C63 58 POP ax
|
||||||
|
021 000C64 03C2 ADD ax, dx
|
||||||
|
|
||||||
|
023 000C6F 5E L22: POP si
|
||||||
|
024 000C70 5D POP bp
|
||||||
|
025 000C71 CB RETF
|
||||||
|
|
||||||
|
026 000C6A B80100 L21: MOV ax, 1
|
||||||
|
027 000C6D EB00 JMP L22
|
||||||
|
|
||||||
|
proc_5 ENDP
|
||||||
|
|
||||||
|
proc_4 PROC FAR
|
||||||
|
000 000DCE 55 PUSH bp
|
||||||
|
001 000DCF 8BEC MOV bp, sp
|
||||||
|
002 000DD1 83EC04 SUB sp, 4
|
||||||
|
003 000DD4 56 PUSH si
|
||||||
|
004 000DD5 57 PUSH di
|
||||||
|
005 000DD6 33F6 XOR si, si
|
||||||
|
|
||||||
|
007 000DFA 81FEE803 L23: CMP si, 3E8h
|
||||||
|
008 000DFE 7CDA JL L24
|
||||||
|
009 000E00 8B46FE MOV ax, [bp-2]
|
||||||
|
011 000E05 5F POP di
|
||||||
|
012 000E06 5E POP si
|
||||||
|
013 000E07 8BE5 MOV sp, bp
|
||||||
|
014 000E09 5D POP bp
|
||||||
|
015 000E0A CB RETF
|
||||||
|
|
||||||
|
016 000DDA C746FE0000 L24: MOV word ptr [bp-2], 0
|
||||||
|
017 000DDF 33FF XOR di, di
|
||||||
|
018 000DE1 C746FC0100 MOV word ptr [bp-4], 1
|
||||||
|
|
||||||
|
020 000DF3 81FFB300 L25: CMP di, 0B3h
|
||||||
|
021 000DF7 7CEF JL L26
|
||||||
|
022 000DF9 46 INC si
|
||||||
|
023 JMP L23 ;Synthetic inst
|
||||||
|
|
||||||
|
024 000DE8 8B46FC L26: MOV ax, [bp-4]
|
||||||
|
025 000DEB 0146FE ADD [bp-2], ax
|
||||||
|
026 000DEE 8346FC02 ADD word ptr [bp-4], 2
|
||||||
|
027 000DF2 47 INC di
|
||||||
|
028 JMP L25 ;Synthetic inst
|
||||||
|
|
||||||
|
proc_4 ENDP
|
||||||
|
|
||||||
|
proc_3 PROC FAR
|
||||||
|
000 000CC8 55 PUSH bp
|
||||||
|
001 000CC9 8BEC MOV bp, sp
|
||||||
|
|
||||||
|
003 000CE0 C45E06 L27: LES bx, dword ptr[bp+6]
|
||||||
|
004 000CE3 268A07 MOV al, es:[bx]
|
||||||
|
005 000CE6 C45E0A LES bx, dword ptr[bp+0Ah]
|
||||||
|
006 000CE9 263A07 CMP al, es:[bx]
|
||||||
|
007 000CEC 74DF JE L28
|
||||||
|
008 000CEE C45E06 LES bx, dword ptr[bp+6]
|
||||||
|
009 000CF1 268A07 MOV al, es:[bx]
|
||||||
|
010 000CF4 98 CWD
|
||||||
|
011 000CF5 C45E0A LES bx, dword ptr[bp+0Ah]
|
||||||
|
012 000CF8 50 PUSH ax
|
||||||
|
013 000CF9 268A07 MOV al, es:[bx]
|
||||||
|
014 000CFC 98 CWD
|
||||||
|
015 000CFD 8BD0 MOV dx, ax
|
||||||
|
016 000CFF 58 POP ax
|
||||||
|
017 000D00 2BC2 SUB ax, dx
|
||||||
|
|
||||||
|
019 000D04 5D L29: POP bp
|
||||||
|
020 000D05 CB RETF
|
||||||
|
|
||||||
|
021 000CCD C45E06 L28: LES bx, dword ptr[bp+6]
|
||||||
|
022 000CD0 26803F00 CMP byte ptr es:[bx], 0
|
||||||
|
023 000CD4 7504 JNE L30
|
||||||
|
024 000CD6 33C0 XOR ax, ax
|
||||||
|
025 000CD8 EB2A JMP L29
|
||||||
|
|
||||||
|
026 000CDA FF4606 L30: INC word ptr [bp+6]
|
||||||
|
027 000CDD FF460A INC word ptr [bp+0Ah]
|
||||||
|
028 JMP L27 ;Synthetic inst
|
||||||
|
|
||||||
|
proc_3 ENDP
|
||||||
|
|
||||||
|
proc_2 PROC FAR
|
||||||
|
000 000D06 55 PUSH bp
|
||||||
|
001 000D07 8BEC MOV bp, sp
|
||||||
|
|
||||||
|
003 000D0B C45E0A L31: LES bx, dword ptr[bp+0Ah]
|
||||||
|
004 000D0E FF460A INC word ptr [bp+0Ah]
|
||||||
|
005 000D11 268A07 MOV al, es:[bx]
|
||||||
|
006 000D14 C45E06 LES bx, dword ptr[bp+6]
|
||||||
|
007 000D17 FF4606 INC word ptr [bp+6]
|
||||||
|
008 000D1A 268807 MOV es:[bx], al
|
||||||
|
009 000D1D 0AC0 OR al, al
|
||||||
|
010 000D1F 75EA JNE L31
|
||||||
|
011 000D21 5D POP bp
|
||||||
|
012 000D22 CB RETF
|
||||||
|
|
||||||
|
proc_2 ENDP
|
||||||
|
|
||||||
|
proc_1 PROC FAR
|
||||||
|
000 000C72 55 PUSH bp
|
||||||
|
001 000C73 8BEC MOV bp, sp
|
||||||
|
002 000C75 56 PUSH si
|
||||||
|
003 000C76 57 PUSH di
|
||||||
|
004 000C77 33F6 XOR si, si
|
||||||
|
005 000C79 33FF XOR di, di
|
||||||
|
|
||||||
|
007 000CBA 81FE2823 L32: CMP si, 2328h
|
||||||
|
008 000CBE 7CBD JL L33
|
||||||
|
009 000CC0 8BC7 MOV ax, di
|
||||||
|
011 000CC4 5F POP di
|
||||||
|
012 000CC5 5E POP si
|
||||||
|
013 000CC6 5D POP bp
|
||||||
|
014 000CC7 CB RETF
|
||||||
|
|
||||||
|
015 000C7D 1E L33: PUSH ds
|
||||||
|
016 000C7E B83701 MOV ax, 137h
|
||||||
|
017 000C81 50 PUSH ax
|
||||||
|
018 000C82 FF7608 PUSH word ptr [bp+8]
|
||||||
|
019 000C85 FF7606 PUSH word ptr [bp+6]
|
||||||
|
020 000C88 9A56048B00 CALL far ptr proc_2
|
||||||
|
021 000C8D 83C408 ADD sp, 8
|
||||||
|
022 000C90 1E PUSH ds
|
||||||
|
023 000C91 B84801 MOV ax, 148h
|
||||||
|
024 000C94 50 PUSH ax
|
||||||
|
025 000C95 FF760C PUSH word ptr [bp+0Ch]
|
||||||
|
026 000C98 FF760A PUSH word ptr [bp+0Ah]
|
||||||
|
027 000C9B 9A56048B00 CALL far ptr proc_2
|
||||||
|
028 000CA0 83C408 ADD sp, 8
|
||||||
|
029 000CA3 FF760C PUSH word ptr [bp+0Ch]
|
||||||
|
030 000CA6 FF760A PUSH word ptr [bp+0Ah]
|
||||||
|
031 000CA9 FF7608 PUSH word ptr [bp+8]
|
||||||
|
032 000CAC FF7606 PUSH word ptr [bp+6]
|
||||||
|
033 000CAF 9A18048B00 CALL far ptr proc_3
|
||||||
|
034 000CB4 83C408 ADD sp, 8
|
||||||
|
035 000CB7 03F8 ADD di, ax
|
||||||
|
036 000CB9 46 INC si
|
||||||
|
037 JMP L32 ;Synthetic inst
|
||||||
|
|
||||||
|
proc_1 ENDP
|
||||||
|
|
||||||
|
main PROC FAR
|
||||||
|
000 0008B4 55 PUSH bp
|
||||||
|
001 0008B5 8BEC MOV bp, sp
|
||||||
|
002 0008B7 81ECD400 SUB sp, 0D4h
|
||||||
|
003 0008BB 56 PUSH si
|
||||||
|
004 0008BC 33F6 XOR si, si
|
||||||
|
005 0008BE B80700 MOV ax, 7
|
||||||
|
006 0008C1 50 PUSH ax
|
||||||
|
007 0008C2 1E PUSH ds
|
||||||
|
008 0008C3 B89800 MOV ax, 98h
|
||||||
|
009 0008C6 50 PUSH ax
|
||||||
|
010 0008C7 9A02000E05 CALL far ptr printf
|
||||||
|
011 0008CC 83C406 ADD sp, 6
|
||||||
|
|
||||||
|
013 000A56 83FE06 L34: CMP si, 6
|
||||||
|
014 000A59 7D03 JGE L35
|
||||||
|
|
||||||
|
016 0008D2 8BC6 L36: MOV ax, si
|
||||||
|
017 0008D4 3D0500 CMP ax, 5
|
||||||
|
018 0008D7 7603 JBE L37
|
||||||
|
|
||||||
|
021 000A55 46 L38: INC si
|
||||||
|
022 JMP L34 ;Synthetic inst
|
||||||
|
|
||||||
|
023 0008DC 8BD8 L37: MOV bx, ax
|
||||||
|
024 0008DE D1E3 SHL bx, 1
|
||||||
|
025 0008E0 2EFFA73500 JMP word ptr cs:[bx+35h];Switch
|
||||||
|
|
||||||
|
026 0008F1 16 PUSH ss ;Case l0
|
||||||
|
027 0008F2 8D4690 LEA ax, [bp-70h]
|
||||||
|
028 0008F5 50 PUSH ax
|
||||||
|
029 0008F6 16 PUSH ss
|
||||||
|
030 0008F7 8D862CFF LEA ax, [bp-0D4h]
|
||||||
|
031 0008FB 50 PUSH ax
|
||||||
|
032 0008FC 9AC2038B00 CALL far ptr proc_1
|
||||||
|
033 000901 83C408 ADD sp, 8
|
||||||
|
034 000904 A31806 MOV [618h], ax
|
||||||
|
035 000907 FF361806 PUSH word ptr [618h]
|
||||||
|
036 00090B 1E PUSH ds
|
||||||
|
037 00090C B8A500 MOV ax, 0A5h
|
||||||
|
038 00090F 50 PUSH ax
|
||||||
|
039 000910 9A02000E05 CALL far ptr printf
|
||||||
|
040 000915 83C406 ADD sp, 6
|
||||||
|
041 000918 E93A01 JMP L38
|
||||||
|
|
||||||
|
042 00091B 9A1E058B00 CALL far ptr proc_4 ;Case l1
|
||||||
|
043 000920 A31A06 MOV [61Ah], ax
|
||||||
|
044 000923 FF361A06 PUSH word ptr [61Ah]
|
||||||
|
045 000927 1E PUSH ds
|
||||||
|
046 000928 B8B400 MOV ax, 0B4h
|
||||||
|
047 00092B 50 PUSH ax
|
||||||
|
048 00092C 9A02000E05 CALL far ptr printf
|
||||||
|
049 000931 83C406 ADD sp, 6
|
||||||
|
050 000934 E91E01 JMP L38
|
||||||
|
|
||||||
|
051 000937 B81800 MOV ax, 18h ;Case l2
|
||||||
|
052 00093A 50 PUSH ax
|
||||||
|
053 00093B 9A90038B00 CALL far ptr proc_5
|
||||||
|
054 000940 59 POP cx
|
||||||
|
055 000941 A31E06 MOV [61Eh], ax
|
||||||
|
056 000944 FF361E06 PUSH word ptr [61Eh]
|
||||||
|
057 000948 1E PUSH ds
|
||||||
|
058 000949 B8C300 MOV ax, 0C3h
|
||||||
|
059 00094C 50 PUSH ax
|
||||||
|
060 00094D 9A02000E05 CALL far ptr printf
|
||||||
|
061 000952 83C406 ADD sp, 6
|
||||||
|
062 000955 E9FD00 JMP L38
|
||||||
|
|
||||||
|
063 000958 C746F60000 MOV word ptr [bp-0Ah], 0;Case l3
|
||||||
|
064 00095D C746F40000 MOV word ptr [bp-0Ch], 0
|
||||||
|
065 000962 FF76F6 PUSH word ptr [bp-0Ah]
|
||||||
|
066 000965 FF76F4 PUSH word ptr [bp-0Ch]
|
||||||
|
067 000968 9AC4018B00 CALL far ptr proc_6
|
||||||
|
068 00096D 59 POP cx
|
||||||
|
069 00096E 59 POP cx
|
||||||
|
070 00096F 89162206 MOV [622h], dx
|
||||||
|
071 000973 A32006 MOV [620h], ax
|
||||||
|
072 000976 FF362206 PUSH word ptr [622h]
|
||||||
|
073 00097A FF362006 PUSH word ptr [620h]
|
||||||
|
074 00097E 9AC4018B00 CALL far ptr proc_6
|
||||||
|
075 000983 59 POP cx
|
||||||
|
076 000984 59 POP cx
|
||||||
|
077 000985 8956F6 MOV [bp-0Ah], dx
|
||||||
|
078 000988 8946F4 MOV [bp-0Ch], ax
|
||||||
|
079 00098B FF362206 PUSH word ptr [622h]
|
||||||
|
080 00098F FF362006 PUSH word ptr [620h]
|
||||||
|
081 000993 1E PUSH ds
|
||||||
|
082 000994 B8D200 MOV ax, 0D2h
|
||||||
|
083 000997 50 PUSH ax
|
||||||
|
084 000998 9A02000E05 CALL far ptr printf
|
||||||
|
085 00099D 83C408 ADD sp, 8
|
||||||
|
086 0009A0 FF76F6 PUSH word ptr [bp-0Ah]
|
||||||
|
087 0009A3 FF76F4 PUSH word ptr [bp-0Ch]
|
||||||
|
088 0009A6 1E PUSH ds
|
||||||
|
089 0009A7 B8E100 MOV ax, 0E1h
|
||||||
|
090 0009AA 50 PUSH ax
|
||||||
|
091 0009AB 9A02000E05 CALL far ptr printf
|
||||||
|
092 0009B0 83C408 ADD sp, 8
|
||||||
|
093 0009B3 E99F00 JMP L38
|
||||||
|
|
||||||
|
094 0009B6 8B162206 MOV dx, [622h] ;Case l4
|
||||||
|
095 0009BA A12006 MOV ax, [620h]
|
||||||
|
096 0009BD 52 PUSH dx
|
||||||
|
097 0009BE 50 PUSH ax
|
||||||
|
098 0009BF CD378626FF ESC FILD [bp-0DAh]
|
||||||
|
099 0009C4 CD3D INT 3Dh /* Unknown int */
|
||||||
|
|
||||||
|
100 0009C6 83C404 ADD sp, 4
|
||||||
|
101 0009C9 83EC08 SUB sp, 8
|
||||||
|
102 0009CC CD399E22FF ESC FSTP [bp-0DEh]
|
||||||
|
103 0009D1 CD3D INT 3Dh /* Unknown int */
|
||||||
|
|
||||||
|
104 0009D3 9A21028B00 CALL far ptr proc_7
|
||||||
|
105 0009D8 83C408 ADD sp, 8
|
||||||
|
106 0009DB CD391E2406 ESC FSTP [624h]
|
||||||
|
107 0009E0 CD3D INT 3Dh /* Unknown int */
|
||||||
|
|
||||||
|
108 0009E2 FF362A06 PUSH word ptr [62Ah]
|
||||||
|
109 0009E6 FF362806 PUSH word ptr [628h]
|
||||||
|
110 0009EA FF362606 PUSH word ptr [626h]
|
||||||
|
111 0009EE FF362406 PUSH word ptr [624h]
|
||||||
|
112 0009F2 1E PUSH ds
|
||||||
|
113 0009F3 B8F100 MOV ax, 0F1h
|
||||||
|
114 0009F6 50 PUSH ax
|
||||||
|
115 0009F7 9A02000E05 CALL far ptr printf
|
||||||
|
116 0009FC 83C40C ADD sp, 0Ch
|
||||||
|
117 0009FF FF362A06 PUSH word ptr [62Ah]
|
||||||
|
118 000A03 FF362806 PUSH word ptr [628h]
|
||||||
|
119 000A07 FF362606 PUSH word ptr [626h]
|
||||||
|
120 000A0B FF362406 PUSH word ptr [624h]
|
||||||
|
121 000A0F 9AE6028B00 CALL far ptr proc_9
|
||||||
|
122 000A14 83C408 ADD sp, 8
|
||||||
|
123 000A17 CD395EF8 ESC FSTP [bp-8]
|
||||||
|
124 000A1B CD3D INT 3Dh /* Unknown int */
|
||||||
|
|
||||||
|
125 000A1D FF76FE PUSH word ptr [bp-2]
|
||||||
|
126 000A20 FF76FC PUSH word ptr [bp-4]
|
||||||
|
127 000A23 FF76FA PUSH word ptr [bp-6]
|
||||||
|
128 000A26 FF76F8 PUSH word ptr [bp-8]
|
||||||
|
129 000A29 1E PUSH ds
|
||||||
|
130 000A2A B80001 MOV ax, 100h
|
||||||
|
131 000A2D 50 PUSH ax
|
||||||
|
132 000A2E 9A02000E05 CALL far ptr printf
|
||||||
|
133 000A33 83C40C ADD sp, 0Ch
|
||||||
|
134 000A36 EB1D JMP L38
|
||||||
|
|
||||||
|
135 000A38 9A73048B00 CALL far ptr proc_10 ;Case l5
|
||||||
|
136 000A3D A31C06 MOV [61Ch], ax
|
||||||
|
137 000A40 FF361C06 PUSH word ptr [61Ch]
|
||||||
|
138 000A44 1E PUSH ds
|
||||||
|
139 000A45 B80E01 MOV ax, 10Eh
|
||||||
|
140 000A48 50 PUSH ax
|
||||||
|
141 000A49 9A02000E05 CALL far ptr printf
|
||||||
|
142 000A4E 83C406 ADD sp, 6
|
||||||
|
143 000A51 EB02 JMP L38
|
||||||
|
|
||||||
|
144 000A5E B80700 L35: MOV ax, 7
|
||||||
|
145 000A61 50 PUSH ax
|
||||||
|
146 000A62 1E PUSH ds
|
||||||
|
147 000A63 B81C01 MOV ax, 11Ch
|
||||||
|
148 000A66 50 PUSH ax
|
||||||
|
149 000A67 9A02000E05 CALL far ptr printf
|
||||||
|
150 000A6C 83C406 ADD sp, 6
|
||||||
|
151 000A6F 5E POP si
|
||||||
|
152 000A70 8BE5 MOV sp, bp
|
||||||
|
153 000A72 5D POP bp
|
||||||
|
154 000A73 CB RETF
|
||||||
|
|
||||||
|
main ENDP
|
||||||
|
|
||||||
396
tests/prev_base/DHAMP.b
Normal file
396
tests/prev_base/DHAMP.b
Normal file
@ -0,0 +1,396 @@
|
|||||||
|
/*
|
||||||
|
* Input file : ./tests/inputs/DHAMP.EXE
|
||||||
|
* File type : EXE
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include "dcc.h"
|
||||||
|
|
||||||
|
|
||||||
|
int proc_2 (long arg0, long arg1)
|
||||||
|
/* Takes 8 bytes of parameters.
|
||||||
|
* High-level language prologue code.
|
||||||
|
* C calling convention.
|
||||||
|
*/
|
||||||
|
{
|
||||||
|
char loc1; /* al */
|
||||||
|
int loc2; /* al */
|
||||||
|
int loc3; /* bx */
|
||||||
|
|
||||||
|
do {
|
||||||
|
arg0 = (arg0 + 1);
|
||||||
|
loc1 = es[bx];
|
||||||
|
arg1 = (arg1 + 1);
|
||||||
|
es[bx] = loc1;
|
||||||
|
} while ((loc2 != 0));
|
||||||
|
return (loc3);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
int proc_3 (long arg0, long arg1)
|
||||||
|
/* Takes 8 bytes of parameters.
|
||||||
|
* High-level language prologue code.
|
||||||
|
* C calling convention.
|
||||||
|
*/
|
||||||
|
{
|
||||||
|
int loc1; /* ax */
|
||||||
|
|
||||||
|
while ((es[bx] == es[bx])) {
|
||||||
|
|
||||||
|
if (es[bx] == 0) {
|
||||||
|
loc1 = 0;
|
||||||
|
return (loc1);
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
arg0 = (arg0 + 1);
|
||||||
|
arg1 = (arg1 + 1);
|
||||||
|
}
|
||||||
|
} /* end of while */
|
||||||
|
loc1 = (es[bx] - es[bx]);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
int proc_1 (int arg0, int arg1, int arg2, int arg3)
|
||||||
|
/* Takes 8 bytes of parameters.
|
||||||
|
* High-level language prologue code.
|
||||||
|
* C calling convention.
|
||||||
|
*/
|
||||||
|
{
|
||||||
|
int loc1; /* si */
|
||||||
|
int loc2; /* di */
|
||||||
|
loc1 = 0;
|
||||||
|
loc2 = 0;
|
||||||
|
|
||||||
|
while ((loc1 < 0x2328)) {
|
||||||
|
proc_2 (arg1, arg0, 311);
|
||||||
|
proc_2 (arg3, arg2, 328);
|
||||||
|
loc2 = (loc2 + proc_3 (arg1, arg0, arg3, arg2));
|
||||||
|
loc1 = (loc1 + 1);
|
||||||
|
} /* end of while */
|
||||||
|
return (loc2);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
int proc_4 ()
|
||||||
|
/* Takes no parameters.
|
||||||
|
* High-level language prologue code.
|
||||||
|
*/
|
||||||
|
{
|
||||||
|
int loc1;
|
||||||
|
int loc2;
|
||||||
|
int loc3;
|
||||||
|
int loc4;
|
||||||
|
loc3 = 0;
|
||||||
|
|
||||||
|
while ((loc3 < 0x3e8)) {
|
||||||
|
loc1 = 0;
|
||||||
|
loc4 = 0;
|
||||||
|
loc2 = 1;
|
||||||
|
|
||||||
|
while ((loc4 < 179)) {
|
||||||
|
loc1 = (loc1 + loc2);
|
||||||
|
loc2 = (loc2 + 2);
|
||||||
|
loc4 = (loc4 + 1);
|
||||||
|
} /* end of while */
|
||||||
|
loc3 = (loc3 + 1);
|
||||||
|
} /* end of while */
|
||||||
|
return (loc1);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
int proc_5 (int arg0)
|
||||||
|
/* Takes 2 bytes of parameters.
|
||||||
|
* High-level language prologue code.
|
||||||
|
* C calling convention.
|
||||||
|
*/
|
||||||
|
{
|
||||||
|
int loc1; /* si */
|
||||||
|
int loc2; /* ax */
|
||||||
|
loc1 = arg0;
|
||||||
|
|
||||||
|
if (loc1 > 2) {
|
||||||
|
loc2 = (proc_5 ((loc1 - 1)) + proc_5 ((loc1 + 0xfffe)));
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
loc2 = 1;
|
||||||
|
}
|
||||||
|
return (loc2);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
long proc_6 (int arg0, int arg1)
|
||||||
|
/* Takes 4 bytes of parameters.
|
||||||
|
* High-level language prologue code.
|
||||||
|
* C calling convention.
|
||||||
|
*/
|
||||||
|
{
|
||||||
|
long loc1;
|
||||||
|
int loc2; /* si */
|
||||||
|
|
||||||
|
if ((arg0 | arg1) == 0) {
|
||||||
|
loc2 = 0;
|
||||||
|
|
||||||
|
while ((loc2 < 0x2328)) {
|
||||||
|
loc1 = (loc1 + [23798]);
|
||||||
|
[23798] = ([23798] + 2);
|
||||||
|
loc2 = (loc2 + 1);
|
||||||
|
} /* end of while */
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
loc2 = 0;
|
||||||
|
|
||||||
|
while ((loc2 < 0x2328)) {
|
||||||
|
[23798] = ([23798] - 2);
|
||||||
|
loc1 = (loc1 - [23798]);
|
||||||
|
loc2 = (loc2 + 1);
|
||||||
|
} /* end of while */
|
||||||
|
}
|
||||||
|
return (loc1);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void proc_8 (int arg0)
|
||||||
|
/* Takes 8 bytes of parameters.
|
||||||
|
* High-level language prologue code.
|
||||||
|
* Untranslatable routine. Assembler provided.
|
||||||
|
* C calling convention.
|
||||||
|
* Contains instructions not normally used by compilers.
|
||||||
|
* Contains coprocessor instructions.
|
||||||
|
*/
|
||||||
|
{
|
||||||
|
PUSH bp
|
||||||
|
MOV bp, sp
|
||||||
|
ESC FLD [126h]
|
||||||
|
ESC FLD [bp+6]
|
||||||
|
ESC FCOMPP
|
||||||
|
ESC FSTSW [62Ch]
|
||||||
|
INT 3Dh /* Unknown int */
|
||||||
|
|
||||||
|
MOV ah, [62Dh]
|
||||||
|
SAHF
|
||||||
|
JAE L1
|
||||||
|
ESC FLD [bp+6]
|
||||||
|
ESC FCHS
|
||||||
|
|
||||||
|
L2: POP bp
|
||||||
|
RETF
|
||||||
|
|
||||||
|
L1: ESC FLD [bp+6]
|
||||||
|
JMP L2 ;Synthetic inst
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
proc_7 (int arg0, int arg1, int arg2, int arg3)
|
||||||
|
/* Takes 8 bytes of parameters.
|
||||||
|
* High-level language prologue code.
|
||||||
|
* Untranslatable routine. Assembler provided.
|
||||||
|
* C calling convention.
|
||||||
|
* Contains instructions not normally used by compilers.
|
||||||
|
* Contains coprocessor instructions.
|
||||||
|
*/
|
||||||
|
{
|
||||||
|
PUSH bp
|
||||||
|
MOV bp, sp
|
||||||
|
SUB sp, 10h
|
||||||
|
ESC FLD [bp+6]
|
||||||
|
ESC FDIV [127h]
|
||||||
|
ESC FSTP [bp-8]
|
||||||
|
INT 3Dh /* Unknown int */
|
||||||
|
|
||||||
|
MOV ax, [bp+0Ch]
|
||||||
|
MOV [bp-0Ah], ax
|
||||||
|
MOV ax, [bp+0Ah]
|
||||||
|
MOV [bp-0Ch], ax
|
||||||
|
MOV ax, [bp+8]
|
||||||
|
MOV [bp-0Eh], ax
|
||||||
|
MOV ax, [bp+6]
|
||||||
|
MOV [bp-10h], ax
|
||||||
|
|
||||||
|
L1: ESC FLD [12Fh]
|
||||||
|
ESC FMUL [bp-8]
|
||||||
|
ESC FCOMP [bp-10h]
|
||||||
|
ESC FSTSW [62Ch]
|
||||||
|
INT 3Dh /* Unknown int */
|
||||||
|
|
||||||
|
MOV ah, [62Dh]
|
||||||
|
SAHF
|
||||||
|
JB L2
|
||||||
|
ESC FLD [bp-8]
|
||||||
|
MOV sp, bp
|
||||||
|
POP bp
|
||||||
|
RETF
|
||||||
|
|
||||||
|
L2: ESC FLD [bp+6]
|
||||||
|
ESC FDIV [bp-8]
|
||||||
|
ESC FSUB [bp-8]
|
||||||
|
ESC FSTP [bp-10h]
|
||||||
|
INT 3Dh /* Unknown int */
|
||||||
|
|
||||||
|
PUSH word ptr [bp-0Ah]
|
||||||
|
PUSH word ptr [bp-0Ch]
|
||||||
|
PUSH word ptr [bp-0Eh]
|
||||||
|
PUSH word ptr [bp-10h]
|
||||||
|
CALL far ptr proc_8
|
||||||
|
ADD sp, 8
|
||||||
|
ESC FSTP [bp-10h]
|
||||||
|
INT 3Dh /* Unknown int */
|
||||||
|
|
||||||
|
ESC FLD [bp+6]
|
||||||
|
ESC FDIV [bp-8]
|
||||||
|
ESC FADD [bp-8]
|
||||||
|
ESC FDIV [127h]
|
||||||
|
ESC FSTP [bp-8]
|
||||||
|
INT 3Dh /* Unknown int */
|
||||||
|
|
||||||
|
JMP L1 ;Synthetic inst
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
proc_9 (int arg0)
|
||||||
|
/* Takes 8 bytes of parameters.
|
||||||
|
* High-level language prologue code.
|
||||||
|
* C calling convention.
|
||||||
|
* Contains instructions not normally used by compilers.
|
||||||
|
* Contains coprocessor instructions.
|
||||||
|
*/
|
||||||
|
{
|
||||||
|
int loc1;
|
||||||
|
int loc2;
|
||||||
|
int loc3; /* ax */
|
||||||
|
loc2 = 100;
|
||||||
|
loc3 = loc2;
|
||||||
|
loc2 = (loc2 - 1);
|
||||||
|
|
||||||
|
while (((loc3 | loc3) != 0)) {
|
||||||
|
loc3 = loc2;
|
||||||
|
loc2 = (loc2 - 1);
|
||||||
|
} /* end of while */
|
||||||
|
return (var06278);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
int proc_10 ()
|
||||||
|
/* Takes no parameters.
|
||||||
|
* High-level language prologue code.
|
||||||
|
* Untranslatable routine. Assembler provided.
|
||||||
|
* Return value in register ax.
|
||||||
|
* Contains instructions not normally used by compilers.
|
||||||
|
*/
|
||||||
|
{
|
||||||
|
PUSH bp
|
||||||
|
MOV bp, sp
|
||||||
|
SUB sp, 68h
|
||||||
|
PUSH si
|
||||||
|
PUSH di
|
||||||
|
PUSH ds
|
||||||
|
MOV ax, 159h
|
||||||
|
PUSH ax
|
||||||
|
PUSH ss
|
||||||
|
LEA ax, [bp-64h]
|
||||||
|
PUSH ax
|
||||||
|
PUSH cs
|
||||||
|
CALL near ptr proc_2
|
||||||
|
ADD sp, 8
|
||||||
|
PUSH ds
|
||||||
|
MOV ax, 170h
|
||||||
|
PUSH ax
|
||||||
|
PUSH ds
|
||||||
|
MOV ax, 167h
|
||||||
|
PUSH ax
|
||||||
|
CALL far ptr fopen
|
||||||
|
ADD sp, 8
|
||||||
|
MOV [bp-66h], dx
|
||||||
|
MOV [bp-68h], ax
|
||||||
|
OR dx, ax
|
||||||
|
JNE L1
|
||||||
|
PUSH ds
|
||||||
|
MOV ax, 172h
|
||||||
|
PUSH ax
|
||||||
|
CALL far ptr printf
|
||||||
|
POP cx
|
||||||
|
POP cx
|
||||||
|
MOV ax, 0FFFFh
|
||||||
|
PUSH ax
|
||||||
|
CALL far ptr exit
|
||||||
|
POP cx
|
||||||
|
|
||||||
|
L1: XOR di, 0
|
||||||
|
|
||||||
|
L2: INC di
|
||||||
|
MOV ax, di
|
||||||
|
CMP ax, 3E8h
|
||||||
|
JL L3
|
||||||
|
PUSH word ptr [bp-66h]
|
||||||
|
PUSH word ptr [bp-68h]
|
||||||
|
CALL far ptr fclose
|
||||||
|
POP cx
|
||||||
|
POP cx
|
||||||
|
MOV ax, di
|
||||||
|
POP di
|
||||||
|
POP si
|
||||||
|
MOV sp, bp
|
||||||
|
POP bp
|
||||||
|
RETF
|
||||||
|
|
||||||
|
L3: XOR si, 0
|
||||||
|
|
||||||
|
L4: CMP byte ptr ss:[bp+si-64h], 0
|
||||||
|
JNE L5
|
||||||
|
|
||||||
|
L5: LES bx, dword ptr[bp-68h]
|
||||||
|
INC word ptr es:[bx]
|
||||||
|
JGE L6
|
||||||
|
MOV al, ss:[bp+si-64h]
|
||||||
|
LES bx, dword ptr[bp-68h]
|
||||||
|
INC word ptr es:[bx+0Ch]
|
||||||
|
LES bx, dword ptres:[bx+0Ch]
|
||||||
|
DEC bx
|
||||||
|
MOV es:[bx], al
|
||||||
|
MOV ah, 0
|
||||||
|
|
||||||
|
L7: INC si
|
||||||
|
JMP L4 ;Synthetic inst
|
||||||
|
|
||||||
|
L6: PUSH word ptr [bp-66h]
|
||||||
|
PUSH word ptr [bp-68h]
|
||||||
|
PUSH word ptr ss:[bp+si-64h]
|
||||||
|
CALL far ptr _fputc
|
||||||
|
ADD sp, 6
|
||||||
|
JMP L7 ;Synthetic inst
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void main ()
|
||||||
|
/* Takes no parameters.
|
||||||
|
* High-level language prologue code.
|
||||||
|
* Contains instructions not normally used by compilers.
|
||||||
|
* Contains coprocessor instructions.
|
||||||
|
*/
|
||||||
|
{
|
||||||
|
int loc1;
|
||||||
|
int loc2;
|
||||||
|
int loc3;
|
||||||
|
int loc4;
|
||||||
|
int loc5;
|
||||||
|
int loc6;
|
||||||
|
int loc7;
|
||||||
|
int loc8;
|
||||||
|
int loc9;
|
||||||
|
int loc10;
|
||||||
|
int loc11;
|
||||||
|
int loc12; /* ax */
|
||||||
|
int loc13; /* bx */
|
||||||
|
printf ("Start...%c\n\n", 7);
|
||||||
|
|
||||||
|
while ((loc11 < 6)) {
|
||||||
|
loc12 = loc11;
|
||||||
|
|
||||||
|
if (loc12 <= 5) {
|
||||||
|
loc13 = (loc12 << 1);
|
||||||
|
var06278 = proc_1 (&loc2, &loc1, , );
|
||||||
|
printf ("\ncresult = %d\n", var06278);
|
||||||
|
}
|
||||||
|
loc11 = (loc11 + 1);
|
||||||
|
} /* end of while */
|
||||||
|
printf ("\n\n...End%c", 7);
|
||||||
|
}
|
||||||
|
|
||||||
99
tests/prev_base/FIBOL.EXE.a1
Normal file
99
tests/prev_base/FIBOL.EXE.a1
Normal file
@ -0,0 +1,99 @@
|
|||||||
|
main PROC FAR
|
||||||
|
000 0004C2 55 PUSH bp
|
||||||
|
001 0004C3 8BEC MOV bp, sp
|
||||||
|
002 0004C5 83EC04 SUB sp, 4
|
||||||
|
003 0004C8 56 PUSH si
|
||||||
|
004 0004C9 57 PUSH di
|
||||||
|
005 0004CA 1E PUSH ds
|
||||||
|
006 0004CB B89400 MOV ax, 94h
|
||||||
|
007 0004CE 50 PUSH ax
|
||||||
|
008 0004CF 9A0E004D01 CALL far ptr printf
|
||||||
|
009 0004D4 59 POP cx
|
||||||
|
010 0004D5 59 POP cx
|
||||||
|
011 0004D6 16 PUSH ss
|
||||||
|
012 0004D7 8D46FC LEA ax, [bp-4]
|
||||||
|
013 0004DA 50 PUSH ax
|
||||||
|
014 0004DB 1E PUSH ds
|
||||||
|
015 0004DC B8B100 MOV ax, 0B1h
|
||||||
|
016 0004DF 50 PUSH ax
|
||||||
|
017 0004E0 9A07000102 CALL far ptr scanf
|
||||||
|
018 0004E5 83C408 ADD sp, 8
|
||||||
|
019 0004E8 BE0100 MOV si, 1
|
||||||
|
020 0004EB EB3B JMP L1
|
||||||
|
|
||||||
|
021 000528 3B76FC L1: CMP si, [bp-4]
|
||||||
|
022 00052B 7EC0 JLE L2
|
||||||
|
023 00052D 33C0 XOR ax, ax
|
||||||
|
024 00052F 50 PUSH ax
|
||||||
|
025 000530 9A0A005A00 CALL far ptr exit
|
||||||
|
026 000535 59 POP cx
|
||||||
|
027 000536 5F POP di
|
||||||
|
028 000537 5E POP si
|
||||||
|
029 000538 8BE5 MOV sp, bp
|
||||||
|
030 00053A 5D POP bp
|
||||||
|
031 00053B CB RETF
|
||||||
|
|
||||||
|
032 0004ED 1E L2: PUSH ds
|
||||||
|
033 0004EE B8B400 MOV ax, 0B4h
|
||||||
|
034 0004F1 50 PUSH ax
|
||||||
|
035 0004F2 9A0E004D01 CALL far ptr printf
|
||||||
|
036 0004F7 59 POP cx
|
||||||
|
037 0004F8 59 POP cx
|
||||||
|
038 0004F9 16 PUSH ss
|
||||||
|
039 0004FA 8D46FE LEA ax, [bp-2]
|
||||||
|
040 0004FD 50 PUSH ax
|
||||||
|
041 0004FE 1E PUSH ds
|
||||||
|
042 0004FF B8C300 MOV ax, 0C3h
|
||||||
|
043 000502 50 PUSH ax
|
||||||
|
044 000503 9A07000102 CALL far ptr scanf
|
||||||
|
045 000508 83C408 ADD sp, 8
|
||||||
|
046 00050B FF76FE PUSH word ptr [bp-2]
|
||||||
|
047 00050E 9A7C004C00 CALL far ptr proc_1
|
||||||
|
048 000513 59 POP cx
|
||||||
|
049 000514 8BF8 MOV di, ax
|
||||||
|
050 000516 57 PUSH di
|
||||||
|
051 000517 FF76FE PUSH word ptr [bp-2]
|
||||||
|
052 00051A 1E PUSH ds
|
||||||
|
053 00051B B8C600 MOV ax, 0C6h
|
||||||
|
054 00051E 50 PUSH ax
|
||||||
|
055 00051F 9A0E004D01 CALL far ptr printf
|
||||||
|
056 000524 83C408 ADD sp, 8
|
||||||
|
057 000527 46 INC si
|
||||||
|
058 JMP L1 ;Synthetic inst
|
||||||
|
|
||||||
|
main ENDP
|
||||||
|
|
||||||
|
proc_1 PROC FAR
|
||||||
|
000 00053C 55 PUSH bp
|
||||||
|
001 00053D 8BEC MOV bp, sp
|
||||||
|
002 00053F 56 PUSH si
|
||||||
|
003 000540 8B7606 MOV si, [bp+6]
|
||||||
|
004 000543 83FE02 CMP si, 2
|
||||||
|
005 000546 7E1E JLE L3
|
||||||
|
006 000548 8BC6 MOV ax, si
|
||||||
|
007 00054A 48 DEC ax
|
||||||
|
008 00054B 50 PUSH ax
|
||||||
|
009 00054C 0E PUSH cs
|
||||||
|
010 00054D E8ECFF CALL near ptr proc_1
|
||||||
|
011 000550 59 POP cx
|
||||||
|
012 000551 50 PUSH ax
|
||||||
|
013 000552 8BC6 MOV ax, si
|
||||||
|
014 000554 05FEFF ADD ax, 0FFFEh
|
||||||
|
015 000557 50 PUSH ax
|
||||||
|
016 000558 0E PUSH cs
|
||||||
|
017 000559 E8E0FF CALL near ptr proc_1
|
||||||
|
018 00055C 59 POP cx
|
||||||
|
019 00055D 8BD0 MOV dx, ax
|
||||||
|
020 00055F 58 POP ax
|
||||||
|
021 000560 03C2 ADD ax, dx
|
||||||
|
022 000562 EB07 JMP L4
|
||||||
|
|
||||||
|
023 00056B 5E L4: POP si
|
||||||
|
024 00056C 5D POP bp
|
||||||
|
025 00056D CB RETF
|
||||||
|
|
||||||
|
026 000566 B80100 L3: MOV ax, 1
|
||||||
|
027 000569 EB00 JMP L4
|
||||||
|
|
||||||
|
proc_1 ENDP
|
||||||
|
|
||||||
97
tests/prev_base/FIBOL.EXE.a2
Normal file
97
tests/prev_base/FIBOL.EXE.a2
Normal file
@ -0,0 +1,97 @@
|
|||||||
|
proc_1 PROC FAR
|
||||||
|
000 00053C 55 PUSH bp
|
||||||
|
001 00053D 8BEC MOV bp, sp
|
||||||
|
002 00053F 56 PUSH si
|
||||||
|
003 000540 8B7606 MOV si, [bp+6]
|
||||||
|
004 000543 83FE02 CMP si, 2
|
||||||
|
005 000546 7E1E JLE L1
|
||||||
|
006 000548 8BC6 MOV ax, si
|
||||||
|
007 00054A 48 DEC ax
|
||||||
|
008 00054B 50 PUSH ax
|
||||||
|
009 00054C 0E PUSH cs
|
||||||
|
010 00054D E8ECFF CALL near ptr proc_1
|
||||||
|
011 000550 59 POP cx
|
||||||
|
012 000551 50 PUSH ax
|
||||||
|
013 000552 8BC6 MOV ax, si
|
||||||
|
014 000554 05FEFF ADD ax, 0FFFEh
|
||||||
|
015 000557 50 PUSH ax
|
||||||
|
016 000558 0E PUSH cs
|
||||||
|
017 000559 E8E0FF CALL near ptr proc_1
|
||||||
|
018 00055C 59 POP cx
|
||||||
|
019 00055D 8BD0 MOV dx, ax
|
||||||
|
020 00055F 58 POP ax
|
||||||
|
021 000560 03C2 ADD ax, dx
|
||||||
|
|
||||||
|
023 00056B 5E L2: POP si
|
||||||
|
024 00056C 5D POP bp
|
||||||
|
025 00056D CB RETF
|
||||||
|
|
||||||
|
026 000566 B80100 L1: MOV ax, 1
|
||||||
|
027 000569 EB00 JMP L2
|
||||||
|
|
||||||
|
proc_1 ENDP
|
||||||
|
|
||||||
|
main PROC FAR
|
||||||
|
000 0004C2 55 PUSH bp
|
||||||
|
001 0004C3 8BEC MOV bp, sp
|
||||||
|
002 0004C5 83EC04 SUB sp, 4
|
||||||
|
003 0004C8 56 PUSH si
|
||||||
|
004 0004C9 57 PUSH di
|
||||||
|
005 0004CA 1E PUSH ds
|
||||||
|
006 0004CB B89400 MOV ax, 94h
|
||||||
|
007 0004CE 50 PUSH ax
|
||||||
|
008 0004CF 9A0E004D01 CALL far ptr printf
|
||||||
|
009 0004D4 59 POP cx
|
||||||
|
010 0004D5 59 POP cx
|
||||||
|
011 0004D6 16 PUSH ss
|
||||||
|
012 0004D7 8D46FC LEA ax, [bp-4]
|
||||||
|
013 0004DA 50 PUSH ax
|
||||||
|
014 0004DB 1E PUSH ds
|
||||||
|
015 0004DC B8B100 MOV ax, 0B1h
|
||||||
|
016 0004DF 50 PUSH ax
|
||||||
|
017 0004E0 9A07000102 CALL far ptr scanf
|
||||||
|
018 0004E5 83C408 ADD sp, 8
|
||||||
|
019 0004E8 BE0100 MOV si, 1
|
||||||
|
|
||||||
|
021 000528 3B76FC L3: CMP si, [bp-4]
|
||||||
|
022 00052B 7EC0 JLE L4
|
||||||
|
023 00052D 33C0 XOR ax, ax
|
||||||
|
024 00052F 50 PUSH ax
|
||||||
|
025 000530 9A0A005A00 CALL far ptr exit
|
||||||
|
026 000535 59 POP cx
|
||||||
|
027 000536 5F POP di
|
||||||
|
028 000537 5E POP si
|
||||||
|
029 000538 8BE5 MOV sp, bp
|
||||||
|
030 00053A 5D POP bp
|
||||||
|
031 00053B CB RETF
|
||||||
|
|
||||||
|
032 0004ED 1E L4: PUSH ds
|
||||||
|
033 0004EE B8B400 MOV ax, 0B4h
|
||||||
|
034 0004F1 50 PUSH ax
|
||||||
|
035 0004F2 9A0E004D01 CALL far ptr printf
|
||||||
|
036 0004F7 59 POP cx
|
||||||
|
037 0004F8 59 POP cx
|
||||||
|
038 0004F9 16 PUSH ss
|
||||||
|
039 0004FA 8D46FE LEA ax, [bp-2]
|
||||||
|
040 0004FD 50 PUSH ax
|
||||||
|
041 0004FE 1E PUSH ds
|
||||||
|
042 0004FF B8C300 MOV ax, 0C3h
|
||||||
|
043 000502 50 PUSH ax
|
||||||
|
044 000503 9A07000102 CALL far ptr scanf
|
||||||
|
045 000508 83C408 ADD sp, 8
|
||||||
|
046 00050B FF76FE PUSH word ptr [bp-2]
|
||||||
|
047 00050E 9A7C004C00 CALL far ptr proc_1
|
||||||
|
048 000513 59 POP cx
|
||||||
|
049 000514 8BF8 MOV di, ax
|
||||||
|
050 000516 57 PUSH di
|
||||||
|
051 000517 FF76FE PUSH word ptr [bp-2]
|
||||||
|
052 00051A 1E PUSH ds
|
||||||
|
053 00051B B8C600 MOV ax, 0C6h
|
||||||
|
054 00051E 50 PUSH ax
|
||||||
|
055 00051F 9A0E004D01 CALL far ptr printf
|
||||||
|
056 000524 83C408 ADD sp, 8
|
||||||
|
057 000527 46 INC si
|
||||||
|
058 JMP L3 ;Synthetic inst
|
||||||
|
|
||||||
|
main ENDP
|
||||||
|
|
||||||
51
tests/prev_base/FIBOL.b
Normal file
51
tests/prev_base/FIBOL.b
Normal file
@ -0,0 +1,51 @@
|
|||||||
|
/*
|
||||||
|
* Input file : ./tests/inputs/FIBOL.EXE
|
||||||
|
* File type : EXE
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include "dcc.h"
|
||||||
|
|
||||||
|
|
||||||
|
int proc_1 (int arg0)
|
||||||
|
/* Takes 2 bytes of parameters.
|
||||||
|
* High-level language prologue code.
|
||||||
|
* C calling convention.
|
||||||
|
*/
|
||||||
|
{
|
||||||
|
int loc1; /* si */
|
||||||
|
int loc2; /* ax */
|
||||||
|
loc1 = arg0;
|
||||||
|
|
||||||
|
if (loc1 > 2) {
|
||||||
|
loc2 = (proc_1 ((loc1 - 1)) + proc_1 ((loc1 + 0xfffe)));
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
loc2 = 1;
|
||||||
|
}
|
||||||
|
return (loc2);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void main ()
|
||||||
|
/* Takes no parameters.
|
||||||
|
* High-level language prologue code.
|
||||||
|
* Contains instructions not normally used by compilers.
|
||||||
|
*/
|
||||||
|
{
|
||||||
|
int loc1;
|
||||||
|
int loc2;
|
||||||
|
int loc3;
|
||||||
|
int loc4;
|
||||||
|
printf ("Input number of iterations: ");
|
||||||
|
scanf ("%d", &loc1, );
|
||||||
|
loc3 = 1;
|
||||||
|
|
||||||
|
while ((loc3 <= loc1)) {
|
||||||
|
printf ("Input number: ");
|
||||||
|
scanf ("%d", &loc2, );
|
||||||
|
printf ("fibonacci(%d) = %u\n", loc2, proc_1 (loc2));
|
||||||
|
loc3 = (loc3 + 1);
|
||||||
|
} /* end of while */
|
||||||
|
exit (0);
|
||||||
|
}
|
||||||
|
|
||||||
@ -14,7 +14,6 @@ int proc_1 (int arg0)
|
|||||||
{
|
{
|
||||||
int loc1; /* si */
|
int loc1; /* si */
|
||||||
int loc2; /* ax */
|
int loc2; /* ax */
|
||||||
|
|
||||||
loc1 = arg0;
|
loc1 = arg0;
|
||||||
|
|
||||||
if (loc1 > 2) {
|
if (loc1 > 2) {
|
||||||
@ -36,7 +35,6 @@ int loc1;
|
|||||||
int loc2;
|
int loc2;
|
||||||
int loc3;
|
int loc3;
|
||||||
int loc4;
|
int loc4;
|
||||||
|
|
||||||
printf ("Input number of iterations: ");
|
printf ("Input number of iterations: ");
|
||||||
scanf ("%d", &loc1);
|
scanf ("%d", &loc1);
|
||||||
loc3 = 1;
|
loc3 = 1;
|
||||||
|
|||||||
45
tests/prev_base/INTOPS.EXE.a1
Normal file
45
tests/prev_base/INTOPS.EXE.a1
Normal file
@ -0,0 +1,45 @@
|
|||||||
|
main PROC NEAR
|
||||||
|
000 0002FA 55 PUSH bp
|
||||||
|
001 0002FB 8BEC MOV bp, sp
|
||||||
|
002 0002FD 83EC02 SUB sp, 2
|
||||||
|
003 000300 56 PUSH si
|
||||||
|
004 000301 C746FEFF00 MOV word ptr [bp-2], 0FFh
|
||||||
|
005 000306 BE8F00 MOV si, 8Fh
|
||||||
|
006 000309 8B46FE MOV ax, [bp-2]
|
||||||
|
007 00030C 03C6 ADD ax, si
|
||||||
|
008 00030E 8BF0 MOV si, ax
|
||||||
|
009 000310 8B46FE MOV ax, [bp-2]
|
||||||
|
010 000313 2BC6 SUB ax, si
|
||||||
|
011 000315 8946FE MOV [bp-2], ax
|
||||||
|
012 000318 8B46FE MOV ax, [bp-2]
|
||||||
|
013 00031B F7E6 MUL si
|
||||||
|
014 00031D 8946FE MOV [bp-2], ax
|
||||||
|
015 000320 8BC6 MOV ax, si
|
||||||
|
016 000322 99 CWD
|
||||||
|
018 000323 F77EFE IDIV word ptr [bp-2]
|
||||||
|
020 000326 8BF0 MOV si, ax
|
||||||
|
021 000328 8BC6 MOV ax, si
|
||||||
|
022 00032A 99 CWD
|
||||||
|
024 00032B F77EFE IDIV word ptr [bp-2]
|
||||||
|
026 00032E 8BF2 MOV si, dx
|
||||||
|
027 000330 8B46FE MOV ax, [bp-2]
|
||||||
|
028 000333 B105 MOV cl, 5
|
||||||
|
029 000335 D3E0 SHL ax, cl
|
||||||
|
030 000337 8946FE MOV [bp-2], ax
|
||||||
|
031 00033A 8BC6 MOV ax, si
|
||||||
|
032 00033C 8A4EFE MOV cl, [bp-2]
|
||||||
|
033 00033F D3F8 SAR ax, cl
|
||||||
|
034 000341 8BF0 MOV si, ax
|
||||||
|
035 000343 56 PUSH si
|
||||||
|
036 000344 FF76FE PUSH word ptr [bp-2]
|
||||||
|
037 000347 B89401 MOV ax, 194h
|
||||||
|
038 00034A 50 PUSH ax
|
||||||
|
039 00034B E8AC06 CALL near ptr printf
|
||||||
|
040 00034E 83C406 ADD sp, 6
|
||||||
|
041 000351 5E POP si
|
||||||
|
042 000352 8BE5 MOV sp, bp
|
||||||
|
043 000354 5D POP bp
|
||||||
|
044 000355 C3 RET
|
||||||
|
|
||||||
|
main ENDP
|
||||||
|
|
||||||
49
tests/prev_base/INTOPS.EXE.a2
Normal file
49
tests/prev_base/INTOPS.EXE.a2
Normal file
@ -0,0 +1,49 @@
|
|||||||
|
main PROC NEAR
|
||||||
|
000 0002FA 55 PUSH bp
|
||||||
|
001 0002FB 8BEC MOV bp, sp
|
||||||
|
002 0002FD 83EC02 SUB sp, 2
|
||||||
|
003 000300 56 PUSH si
|
||||||
|
004 000301 C746FEFF00 MOV word ptr [bp-2], 0FFh
|
||||||
|
005 000306 BE8F00 MOV si, 8Fh
|
||||||
|
006 000309 8B46FE MOV ax, [bp-2]
|
||||||
|
007 00030C 03C6 ADD ax, si
|
||||||
|
008 00030E 8BF0 MOV si, ax
|
||||||
|
009 000310 8B46FE MOV ax, [bp-2]
|
||||||
|
010 000313 2BC6 SUB ax, si
|
||||||
|
011 000315 8946FE MOV [bp-2], ax
|
||||||
|
012 000318 8B46FE MOV ax, [bp-2]
|
||||||
|
013 00031B F7E6 MUL si
|
||||||
|
014 00031D 8946FE MOV [bp-2], ax
|
||||||
|
015 000320 8BC6 MOV ax, si
|
||||||
|
016 000322 99 CWD
|
||||||
|
017 MOV tmp, dx:ax ;Synthetic inst
|
||||||
|
018 000323 F77EFE IDIV word ptr [bp-2]
|
||||||
|
019 MOD word ptr [bp-2] ;Synthetic inst
|
||||||
|
020 000326 8BF0 MOV si, ax
|
||||||
|
021 000328 8BC6 MOV ax, si
|
||||||
|
022 00032A 99 CWD
|
||||||
|
023 MOV tmp, dx:ax ;Synthetic inst
|
||||||
|
024 00032B F77EFE IDIV word ptr [bp-2]
|
||||||
|
025 MOD word ptr [bp-2] ;Synthetic inst
|
||||||
|
026 00032E 8BF2 MOV si, dx
|
||||||
|
027 000330 8B46FE MOV ax, [bp-2]
|
||||||
|
028 000333 B105 MOV cl, 5
|
||||||
|
029 000335 D3E0 SHL ax, cl
|
||||||
|
030 000337 8946FE MOV [bp-2], ax
|
||||||
|
031 00033A 8BC6 MOV ax, si
|
||||||
|
032 00033C 8A4EFE MOV cl, [bp-2]
|
||||||
|
033 00033F D3F8 SAR ax, cl
|
||||||
|
034 000341 8BF0 MOV si, ax
|
||||||
|
035 000343 56 PUSH si
|
||||||
|
036 000344 FF76FE PUSH word ptr [bp-2]
|
||||||
|
037 000347 B89401 MOV ax, 194h
|
||||||
|
038 00034A 50 PUSH ax
|
||||||
|
039 00034B E8AC06 CALL near ptr printf
|
||||||
|
040 00034E 83C406 ADD sp, 6
|
||||||
|
041 000351 5E POP si
|
||||||
|
042 000352 8BE5 MOV sp, bp
|
||||||
|
043 000354 5D POP bp
|
||||||
|
044 000355 C3 RET
|
||||||
|
|
||||||
|
main ENDP
|
||||||
|
|
||||||
23
tests/prev_base/INTOPS.b
Normal file
23
tests/prev_base/INTOPS.b
Normal file
@ -0,0 +1,23 @@
|
|||||||
|
/*
|
||||||
|
* Input file : ./tests/inputs/INTOPS.EXE
|
||||||
|
* File type : EXE
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include "dcc.h"
|
||||||
|
|
||||||
|
|
||||||
|
void main ()
|
||||||
|
/* Takes no parameters.
|
||||||
|
* High-level language prologue code.
|
||||||
|
*/
|
||||||
|
{
|
||||||
|
int loc1;
|
||||||
|
int loc2;
|
||||||
|
loc1 = 255;
|
||||||
|
loc2 = (loc1 + 143);
|
||||||
|
loc1 = (loc1 - loc2);
|
||||||
|
loc1 = (loc1 * loc2);
|
||||||
|
loc1 = (loc1 << 5);
|
||||||
|
printf ("a = %d, b = %d\n", loc1, (((loc2 / loc1) % loc1) >> loc1));
|
||||||
|
}
|
||||||
|
|
||||||
291
tests/prev_base/LONGOPS.EXE.a1
Normal file
291
tests/prev_base/LONGOPS.EXE.a1
Normal file
@ -0,0 +1,291 @@
|
|||||||
|
main PROC NEAR
|
||||||
|
000 0002FA 55 PUSH bp
|
||||||
|
001 0002FB 8BEC MOV bp, sp
|
||||||
|
002 0002FD 83EC08 SUB sp, 8
|
||||||
|
003 000300 C746FA0000 MOV word ptr [bp-6], 0
|
||||||
|
004 000305 C746F8FF00 MOV word ptr [bp-8], 0FFh
|
||||||
|
005 00030A C746FE0000 MOV word ptr [bp-2], 0
|
||||||
|
006 00030F C746FC8F00 MOV word ptr [bp-4], 8Fh
|
||||||
|
007 000314 8B56FA MOV dx, [bp-6]
|
||||||
|
008 000317 8B46F8 MOV ax, [bp-8]
|
||||||
|
009 00031A 0346FC ADD ax, [bp-4]
|
||||||
|
010 00031D 1356FE ADC dx, [bp-2]
|
||||||
|
011 000320 8956FE MOV [bp-2], dx
|
||||||
|
012 000323 8946FC MOV [bp-4], ax
|
||||||
|
013 000326 8B56FA MOV dx, [bp-6]
|
||||||
|
014 000329 8B46F8 MOV ax, [bp-8]
|
||||||
|
015 00032C 2B46FC SUB ax, [bp-4]
|
||||||
|
016 00032F 1B56FE SBB dx, [bp-2]
|
||||||
|
017 000332 8956FA MOV [bp-6], dx
|
||||||
|
018 000335 8946F8 MOV [bp-8], ax
|
||||||
|
019 000338 8B56FA MOV dx, [bp-6]
|
||||||
|
020 00033B 8B46F8 MOV ax, [bp-8]
|
||||||
|
021 00033E 8B4EFE MOV cx, [bp-2]
|
||||||
|
022 000341 8B5EFC MOV bx, [bp-4]
|
||||||
|
023 000344 9AC3081000 CALL far ptr LXMUL@
|
||||||
|
024 000349 8956FA MOV [bp-6], dx
|
||||||
|
025 00034C 8946F8 MOV [bp-8], ax
|
||||||
|
026 00034F FF76FA PUSH word ptr [bp-6]
|
||||||
|
027 000352 FF76F8 PUSH word ptr [bp-8]
|
||||||
|
028 000355 FF76FE PUSH word ptr [bp-2]
|
||||||
|
029 000358 FF76FC PUSH word ptr [bp-4]
|
||||||
|
030 00035B 9AC6101000 CALL far ptr LDIV@
|
||||||
|
031 000360 8956FE MOV [bp-2], dx
|
||||||
|
032 000363 8946FC MOV [bp-4], ax
|
||||||
|
033 000366 FF76FA PUSH word ptr [bp-6]
|
||||||
|
034 000369 FF76F8 PUSH word ptr [bp-8]
|
||||||
|
035 00036C FF76FE PUSH word ptr [bp-2]
|
||||||
|
036 00036F FF76FC PUSH word ptr [bp-4]
|
||||||
|
037 000372 9ACF101000 CALL far ptr LMOD@
|
||||||
|
038 000377 8956FE MOV [bp-2], dx
|
||||||
|
039 00037A 8946FC MOV [bp-4], ax
|
||||||
|
040 00037D 8B56FA MOV dx, [bp-6]
|
||||||
|
041 000380 8B46F8 MOV ax, [bp-8]
|
||||||
|
042 000383 B105 MOV cl, 5
|
||||||
|
043 000385 9A87111000 CALL far ptr LXLSH@
|
||||||
|
044 00038A 8956FA MOV [bp-6], dx
|
||||||
|
045 00038D 8946F8 MOV [bp-8], ax
|
||||||
|
046 000390 8B56FE MOV dx, [bp-2]
|
||||||
|
047 000393 8B46FC MOV ax, [bp-4]
|
||||||
|
048 000396 8A4EF8 MOV cl, [bp-8]
|
||||||
|
049 000399 9A69111000 CALL far ptr LXRSH@
|
||||||
|
050 00039E 8956FE MOV [bp-2], dx
|
||||||
|
051 0003A1 8946FC MOV [bp-4], ax
|
||||||
|
052 0003A4 FF76FE PUSH word ptr [bp-2]
|
||||||
|
053 0003A7 FF76FC PUSH word ptr [bp-4]
|
||||||
|
054 0003AA FF76FA PUSH word ptr [bp-6]
|
||||||
|
055 0003AD FF76F8 PUSH word ptr [bp-8]
|
||||||
|
056 0003B0 B89401 MOV ax, 194h
|
||||||
|
057 0003B3 50 PUSH ax
|
||||||
|
058 0003B4 E8C406 CALL near ptr printf
|
||||||
|
059 0003B7 83C40A ADD sp, 0Ah
|
||||||
|
060 0003BA 8BE5 MOV sp, bp
|
||||||
|
061 0003BC 5D POP bp
|
||||||
|
062 0003BD C3 RET
|
||||||
|
|
||||||
|
main ENDP
|
||||||
|
|
||||||
|
LXMUL@ PROC FAR
|
||||||
|
000 0009C3 56 PUSH si
|
||||||
|
007 0009C6 85C0 TEST ax, ax
|
||||||
|
008 0009C8 7402 JE L1
|
||||||
|
009 0009CA F7E3 MUL bx
|
||||||
|
013 0009CD 85C0 TEST ax, ax
|
||||||
|
014 0009CF 7404 JE L2
|
||||||
|
015 0009D1 F7E6 MUL si
|
||||||
|
016 0009D3 03C8 ADD cx, ax
|
||||||
|
020 0009D6 F7E3 MUL bx
|
||||||
|
021 0009D8 03D1 ADD dx, cx
|
||||||
|
022 0009DA 5E POP si
|
||||||
|
023 0009DB CB RETF
|
||||||
|
|
||||||
|
LXMUL@ ENDP
|
||||||
|
|
||||||
|
LDIV@ PROC FAR
|
||||||
|
000 0011C6 33C9 XOR cx, cx
|
||||||
|
001 0011C8 EB0D JMP L3
|
||||||
|
|
||||||
|
002 0011D7 55 L3: PUSH bp
|
||||||
|
003 0011D8 56 PUSH si
|
||||||
|
004 0011D9 57 PUSH di
|
||||||
|
005 0011DA 8BEC MOV bp, sp
|
||||||
|
006 0011DC 8BF9 MOV di, cx
|
||||||
|
007 0011DE 8B460A MOV ax, [bp+0Ah]
|
||||||
|
008 0011E1 8B560C MOV dx, [bp+0Ch]
|
||||||
|
009 0011E4 8B5E0E MOV bx, [bp+0Eh]
|
||||||
|
010 0011E7 8B4E10 MOV cx, [bp+10h]
|
||||||
|
011 0011EA 0BC9 OR cx, cx
|
||||||
|
012 0011EC 7508 JNE L4
|
||||||
|
013 0011EE 0BD2 OR dx, dx
|
||||||
|
014 0011F0 7469 JE L5
|
||||||
|
015 0011F2 0BDB OR bx, bx
|
||||||
|
016 0011F4 7465 JE L5
|
||||||
|
|
||||||
|
017 0011F6 F7C70100 L4: TEST di, 1
|
||||||
|
018 0011FA 751C JNE L6
|
||||||
|
019 0011FC 0BD2 OR dx, dx
|
||||||
|
020 0011FE 790A JNS L7
|
||||||
|
021 001200 F7DA NEG dx
|
||||||
|
022 001202 F7D8 NEG ax
|
||||||
|
023 001204 83DA00 SBB dx, 0
|
||||||
|
024 001207 83CF0C OR di, 0Ch
|
||||||
|
|
||||||
|
025 00120A 0BC9 L7: OR cx, cx
|
||||||
|
026 00120C 790A JNS L6
|
||||||
|
027 00120E F7D9 NEG cx
|
||||||
|
028 001210 F7DB NEG bx
|
||||||
|
029 001212 83D900 SBB cx, 0
|
||||||
|
030 001215 83F704 XOR di, 4
|
||||||
|
|
||||||
|
031 001218 8BE9 L6: MOV bp, cx
|
||||||
|
032 00121A B92000 MOV cx, 20h
|
||||||
|
033 00121D 57 PUSH di
|
||||||
|
034 00121E 33FF XOR di, di
|
||||||
|
035 001220 33F6 XOR si, si
|
||||||
|
|
||||||
|
036 001222 D1E0 L8: SHL ax, 1
|
||||||
|
037 001224 D1D2 RCL dx, 1
|
||||||
|
038 001226 D1D6 RCL si, 1
|
||||||
|
039 001228 D1D7 RCL di, 1
|
||||||
|
040 00122A 3BFD CMP di, bp
|
||||||
|
041 00122C 720B JB L9
|
||||||
|
042 00122E 7704 JA L10
|
||||||
|
043 001230 3BF3 CMP si, bx
|
||||||
|
044 001232 7205 JB L9
|
||||||
|
|
||||||
|
045 001234 2BF3 L10: SUB si, bx
|
||||||
|
046 001236 1BFD SBB di, bp
|
||||||
|
047 001238 40 INC ax
|
||||||
|
|
||||||
|
048 001239 E2E7 L9: LOOP L8
|
||||||
|
049 00123B 5B POP bx
|
||||||
|
050 00123C F7C30200 TEST bx, 2
|
||||||
|
051 001240 7406 JE L11
|
||||||
|
052 001242 8BC6 MOV ax, si
|
||||||
|
053 001244 8BD7 MOV dx, di
|
||||||
|
054 001246 D1EB SHR bx, 1
|
||||||
|
|
||||||
|
055 001248 F7C30400 L11: TEST bx, 4
|
||||||
|
056 00124C 7407 JE L12
|
||||||
|
057 00124E F7DA NEG dx
|
||||||
|
058 001250 F7D8 NEG ax
|
||||||
|
059 001252 83DA00 SBB dx, 0
|
||||||
|
|
||||||
|
060 001255 5F L12: POP di
|
||||||
|
061 001256 5E POP si
|
||||||
|
062 001257 5D POP bp
|
||||||
|
063 001258 CA0800 RETF 8
|
||||||
|
065 00125B F7F3 DIV bx
|
||||||
|
067 00125D F7C70200 TEST di, 2
|
||||||
|
068 001261 7402 JE L13
|
||||||
|
069 001263 8BC2 MOV ax, dx
|
||||||
|
|
||||||
|
070 001265 33D2 L13: XOR dx, dx
|
||||||
|
071 001267 EBEC JMP L12
|
||||||
|
|
||||||
|
LDIV@ ENDP
|
||||||
|
|
||||||
|
LMOD@ PROC FAR
|
||||||
|
000 0011CF B90200 MOV cx, 2
|
||||||
|
001 0011D2 EB03 JMP L14
|
||||||
|
|
||||||
|
002 0011D7 55 L14: PUSH bp
|
||||||
|
003 0011D8 56 PUSH si
|
||||||
|
004 0011D9 57 PUSH di
|
||||||
|
005 0011DA 8BEC MOV bp, sp
|
||||||
|
006 0011DC 8BF9 MOV di, cx
|
||||||
|
007 0011DE 8B460A MOV ax, [bp+0Ah]
|
||||||
|
008 0011E1 8B560C MOV dx, [bp+0Ch]
|
||||||
|
009 0011E4 8B5E0E MOV bx, [bp+0Eh]
|
||||||
|
010 0011E7 8B4E10 MOV cx, [bp+10h]
|
||||||
|
011 0011EA 0BC9 OR cx, cx
|
||||||
|
012 0011EC 7508 JNE L15
|
||||||
|
013 0011EE 0BD2 OR dx, dx
|
||||||
|
014 0011F0 7469 JE L16
|
||||||
|
015 0011F2 0BDB OR bx, bx
|
||||||
|
016 0011F4 7465 JE L16
|
||||||
|
|
||||||
|
017 0011F6 F7C70100 L15: TEST di, 1
|
||||||
|
018 0011FA 751C JNE L17
|
||||||
|
019 0011FC 0BD2 OR dx, dx
|
||||||
|
020 0011FE 790A JNS L18
|
||||||
|
021 001200 F7DA NEG dx
|
||||||
|
022 001202 F7D8 NEG ax
|
||||||
|
023 001204 83DA00 SBB dx, 0
|
||||||
|
024 001207 83CF0C OR di, 0Ch
|
||||||
|
|
||||||
|
025 00120A 0BC9 L18: OR cx, cx
|
||||||
|
026 00120C 790A JNS L17
|
||||||
|
027 00120E F7D9 NEG cx
|
||||||
|
028 001210 F7DB NEG bx
|
||||||
|
029 001212 83D900 SBB cx, 0
|
||||||
|
030 001215 83F704 XOR di, 4
|
||||||
|
|
||||||
|
031 001218 8BE9 L17: MOV bp, cx
|
||||||
|
032 00121A B92000 MOV cx, 20h
|
||||||
|
033 00121D 57 PUSH di
|
||||||
|
034 00121E 33FF XOR di, di
|
||||||
|
035 001220 33F6 XOR si, si
|
||||||
|
|
||||||
|
036 001222 D1E0 L19: SHL ax, 1
|
||||||
|
037 001224 D1D2 RCL dx, 1
|
||||||
|
038 001226 D1D6 RCL si, 1
|
||||||
|
039 001228 D1D7 RCL di, 1
|
||||||
|
040 00122A 3BFD CMP di, bp
|
||||||
|
041 00122C 720B JB L20
|
||||||
|
042 00122E 7704 JA L21
|
||||||
|
043 001230 3BF3 CMP si, bx
|
||||||
|
044 001232 7205 JB L20
|
||||||
|
|
||||||
|
045 001234 2BF3 L21: SUB si, bx
|
||||||
|
046 001236 1BFD SBB di, bp
|
||||||
|
047 001238 40 INC ax
|
||||||
|
|
||||||
|
048 001239 E2E7 L20: LOOP L19
|
||||||
|
049 00123B 5B POP bx
|
||||||
|
050 00123C F7C30200 TEST bx, 2
|
||||||
|
051 001240 7406 JE L22
|
||||||
|
052 001242 8BC6 MOV ax, si
|
||||||
|
053 001244 8BD7 MOV dx, di
|
||||||
|
054 001246 D1EB SHR bx, 1
|
||||||
|
|
||||||
|
055 001248 F7C30400 L22: TEST bx, 4
|
||||||
|
056 00124C 7407 JE L23
|
||||||
|
057 00124E F7DA NEG dx
|
||||||
|
058 001250 F7D8 NEG ax
|
||||||
|
059 001252 83DA00 SBB dx, 0
|
||||||
|
|
||||||
|
060 001255 5F L23: POP di
|
||||||
|
061 001256 5E POP si
|
||||||
|
062 001257 5D POP bp
|
||||||
|
063 001258 CA0800 RETF 8
|
||||||
|
065 00125B F7F3 DIV bx
|
||||||
|
067 00125D F7C70200 TEST di, 2
|
||||||
|
068 001261 7402 JE L24
|
||||||
|
069 001263 8BC2 MOV ax, dx
|
||||||
|
|
||||||
|
070 001265 33D2 L24: XOR dx, dx
|
||||||
|
071 001267 EBEC JMP L23
|
||||||
|
|
||||||
|
LMOD@ ENDP
|
||||||
|
|
||||||
|
LXLSH@ PROC FAR
|
||||||
|
000 001287 80F910 CMP cl, 10h
|
||||||
|
001 00128A 7310 JAE L25
|
||||||
|
002 00128C 8BD8 MOV bx, ax
|
||||||
|
003 00128E D3E0 SHL ax, cl
|
||||||
|
004 001290 D3E2 SHL dx, cl
|
||||||
|
005 001292 F6D9 NEG cl
|
||||||
|
006 001294 80C110 ADD cl, 10h
|
||||||
|
007 001297 D3EB SHR bx, cl
|
||||||
|
008 001299 0BD3 OR dx, bx
|
||||||
|
009 00129B CB RETF
|
||||||
|
|
||||||
|
010 00129C 80E910 L25: SUB cl, 10h
|
||||||
|
011 00129F 8BD0 MOV dx, ax
|
||||||
|
012 0012A1 33C0 XOR ax, ax
|
||||||
|
013 0012A3 D3E2 SHL dx, cl
|
||||||
|
014 0012A5 CB RETF
|
||||||
|
|
||||||
|
LXLSH@ ENDP
|
||||||
|
|
||||||
|
LXRSH@ PROC FAR
|
||||||
|
000 001269 80F910 CMP cl, 10h
|
||||||
|
001 00126C 7310 JAE L26
|
||||||
|
002 00126E 8BDA MOV bx, dx
|
||||||
|
003 001270 D3E8 SHR ax, cl
|
||||||
|
004 001272 D3FA SAR dx, cl
|
||||||
|
005 001274 F6D9 NEG cl
|
||||||
|
006 001276 80C110 ADD cl, 10h
|
||||||
|
007 001279 D3E3 SHL bx, cl
|
||||||
|
008 00127B 0BC3 OR ax, bx
|
||||||
|
009 00127D CB RETF
|
||||||
|
|
||||||
|
010 00127E 80E910 L26: SUB cl, 10h
|
||||||
|
011 001281 8BC2 MOV ax, dx
|
||||||
|
012 001283 99 CWD
|
||||||
|
013 001284 D3F8 SAR ax, cl
|
||||||
|
014 001286 CB RETF
|
||||||
|
|
||||||
|
LXRSH@ ENDP
|
||||||
|
|
||||||
307
tests/prev_base/LONGOPS.EXE.a2
Normal file
307
tests/prev_base/LONGOPS.EXE.a2
Normal file
@ -0,0 +1,307 @@
|
|||||||
|
LXRSH@ PROC FAR
|
||||||
|
000 001269 80F910 CMP cl, 10h
|
||||||
|
001 00126C 7310 JAE L1
|
||||||
|
002 00126E 8BDA MOV bx, dx
|
||||||
|
003 001270 D3E8 SHR ax, cl
|
||||||
|
004 001272 D3FA SAR dx, cl
|
||||||
|
005 001274 F6D9 NEG cl
|
||||||
|
006 001276 80C110 ADD cl, 10h
|
||||||
|
007 001279 D3E3 SHL bx, cl
|
||||||
|
008 00127B 0BC3 OR ax, bx
|
||||||
|
009 00127D CB RETF
|
||||||
|
|
||||||
|
010 00127E 80E910 L1: SUB cl, 10h
|
||||||
|
011 001281 8BC2 MOV ax, dx
|
||||||
|
012 001283 99 CWD
|
||||||
|
013 001284 D3F8 SAR ax, cl
|
||||||
|
014 001286 CB RETF
|
||||||
|
|
||||||
|
LXRSH@ ENDP
|
||||||
|
|
||||||
|
LXLSH@ PROC FAR
|
||||||
|
000 001287 80F910 CMP cl, 10h
|
||||||
|
001 00128A 7310 JAE L2
|
||||||
|
002 00128C 8BD8 MOV bx, ax
|
||||||
|
003 00128E D3E0 SHL ax, cl
|
||||||
|
004 001290 D3E2 SHL dx, cl
|
||||||
|
005 001292 F6D9 NEG cl
|
||||||
|
006 001294 80C110 ADD cl, 10h
|
||||||
|
007 001297 D3EB SHR bx, cl
|
||||||
|
008 001299 0BD3 OR dx, bx
|
||||||
|
009 00129B CB RETF
|
||||||
|
|
||||||
|
010 00129C 80E910 L2: SUB cl, 10h
|
||||||
|
011 00129F 8BD0 MOV dx, ax
|
||||||
|
012 0012A1 33C0 XOR ax, ax
|
||||||
|
013 0012A3 D3E2 SHL dx, cl
|
||||||
|
014 0012A5 CB RETF
|
||||||
|
|
||||||
|
LXLSH@ ENDP
|
||||||
|
|
||||||
|
LMOD@ PROC FAR
|
||||||
|
000 0011CF B90200 MOV cx, 2
|
||||||
|
002 0011D7 55 PUSH bp
|
||||||
|
003 0011D8 56 PUSH si
|
||||||
|
004 0011D9 57 PUSH di
|
||||||
|
005 0011DA 8BEC MOV bp, sp
|
||||||
|
006 0011DC 8BF9 MOV di, cx
|
||||||
|
007 0011DE 8B460A MOV ax, [bp+0Ah]
|
||||||
|
008 0011E1 8B560C MOV dx, [bp+0Ch]
|
||||||
|
009 0011E4 8B5E0E MOV bx, [bp+0Eh]
|
||||||
|
010 0011E7 8B4E10 MOV cx, [bp+10h]
|
||||||
|
011 0011EA 0BC9 OR cx, cx
|
||||||
|
012 0011EC 7508 JNE L3
|
||||||
|
013 0011EE 0BD2 OR dx, dx
|
||||||
|
014 0011F0 7469 JE L4
|
||||||
|
015 0011F2 0BDB OR bx, bx
|
||||||
|
016 0011F4 7465 JE L4
|
||||||
|
|
||||||
|
017 0011F6 F7C70100 L3: TEST di, 1
|
||||||
|
018 0011FA 751C JNE L5
|
||||||
|
019 0011FC 0BD2 OR dx, dx
|
||||||
|
020 0011FE 790A JNS L6
|
||||||
|
021 001200 F7DA NEG dx
|
||||||
|
022 001202 F7D8 NEG ax
|
||||||
|
023 001204 83DA00 SBB dx, 0
|
||||||
|
024 001207 83CF0C OR di, 0Ch
|
||||||
|
|
||||||
|
025 00120A 0BC9 L6: OR cx, cx
|
||||||
|
026 00120C 790A JNS L5
|
||||||
|
027 00120E F7D9 NEG cx
|
||||||
|
028 001210 F7DB NEG bx
|
||||||
|
029 001212 83D900 SBB cx, 0
|
||||||
|
030 001215 83F704 XOR di, 4
|
||||||
|
|
||||||
|
031 001218 8BE9 L5: MOV bp, cx
|
||||||
|
032 00121A B92000 MOV cx, 20h
|
||||||
|
033 00121D 57 PUSH di
|
||||||
|
034 00121E 33FF XOR di, di
|
||||||
|
035 001220 33F6 XOR si, si
|
||||||
|
|
||||||
|
036 001222 D1E0 L7: SHL ax, 1
|
||||||
|
037 001224 D1D2 RCL dx, 1
|
||||||
|
038 001226 D1D6 RCL si, 1
|
||||||
|
039 001228 D1D7 RCL di, 1
|
||||||
|
040 00122A 3BFD CMP di, bp
|
||||||
|
041 00122C 720B JB L8
|
||||||
|
042 00122E 7704 JA L9
|
||||||
|
043 001230 3BF3 CMP si, bx
|
||||||
|
044 001232 7205 JB L8
|
||||||
|
|
||||||
|
045 001234 2BF3 L9: SUB si, bx
|
||||||
|
046 001236 1BFD SBB di, bp
|
||||||
|
047 001238 40 INC ax
|
||||||
|
|
||||||
|
048 001239 E2E7 L8: LOOP L7
|
||||||
|
049 00123B 5B POP bx
|
||||||
|
050 00123C F7C30200 TEST bx, 2
|
||||||
|
051 001240 7406 JE L10
|
||||||
|
052 001242 8BC6 MOV ax, si
|
||||||
|
053 001244 8BD7 MOV dx, di
|
||||||
|
054 001246 D1EB SHR bx, 1
|
||||||
|
|
||||||
|
055 001248 F7C30400 L10: TEST bx, 4
|
||||||
|
056 00124C 7407 JE L11
|
||||||
|
057 00124E F7DA NEG dx
|
||||||
|
058 001250 F7D8 NEG ax
|
||||||
|
059 001252 83DA00 SBB dx, 0
|
||||||
|
|
||||||
|
060 001255 5F L11: POP di
|
||||||
|
061 001256 5E POP si
|
||||||
|
062 001257 5D POP bp
|
||||||
|
063 001258 CA0800 RETF 8
|
||||||
|
|
||||||
|
064 L4: MOV tmp, dx:ax ;Synthetic inst
|
||||||
|
065 00125B F7F3 DIV bx
|
||||||
|
066 MOD bx ;Synthetic inst
|
||||||
|
067 00125D F7C70200 TEST di, 2
|
||||||
|
068 001261 7402 JE L12
|
||||||
|
069 001263 8BC2 MOV ax, dx
|
||||||
|
|
||||||
|
070 001265 33D2 L12: XOR dx, dx
|
||||||
|
071 001267 EBEC JMP L11
|
||||||
|
|
||||||
|
LMOD@ ENDP
|
||||||
|
|
||||||
|
LDIV@ PROC FAR
|
||||||
|
000 0011C6 33C9 XOR cx, cx
|
||||||
|
002 0011D7 55 PUSH bp
|
||||||
|
003 0011D8 56 PUSH si
|
||||||
|
004 0011D9 57 PUSH di
|
||||||
|
005 0011DA 8BEC MOV bp, sp
|
||||||
|
006 0011DC 8BF9 MOV di, cx
|
||||||
|
007 0011DE 8B460A MOV ax, [bp+0Ah]
|
||||||
|
008 0011E1 8B560C MOV dx, [bp+0Ch]
|
||||||
|
009 0011E4 8B5E0E MOV bx, [bp+0Eh]
|
||||||
|
010 0011E7 8B4E10 MOV cx, [bp+10h]
|
||||||
|
011 0011EA 0BC9 OR cx, cx
|
||||||
|
012 0011EC 7508 JNE L13
|
||||||
|
013 0011EE 0BD2 OR dx, dx
|
||||||
|
014 0011F0 7469 JE L14
|
||||||
|
015 0011F2 0BDB OR bx, bx
|
||||||
|
016 0011F4 7465 JE L14
|
||||||
|
|
||||||
|
017 0011F6 F7C70100 L13: TEST di, 1
|
||||||
|
018 0011FA 751C JNE L15
|
||||||
|
019 0011FC 0BD2 OR dx, dx
|
||||||
|
020 0011FE 790A JNS L16
|
||||||
|
021 001200 F7DA NEG dx
|
||||||
|
022 001202 F7D8 NEG ax
|
||||||
|
023 001204 83DA00 SBB dx, 0
|
||||||
|
024 001207 83CF0C OR di, 0Ch
|
||||||
|
|
||||||
|
025 00120A 0BC9 L16: OR cx, cx
|
||||||
|
026 00120C 790A JNS L15
|
||||||
|
027 00120E F7D9 NEG cx
|
||||||
|
028 001210 F7DB NEG bx
|
||||||
|
029 001212 83D900 SBB cx, 0
|
||||||
|
030 001215 83F704 XOR di, 4
|
||||||
|
|
||||||
|
031 001218 8BE9 L15: MOV bp, cx
|
||||||
|
032 00121A B92000 MOV cx, 20h
|
||||||
|
033 00121D 57 PUSH di
|
||||||
|
034 00121E 33FF XOR di, di
|
||||||
|
035 001220 33F6 XOR si, si
|
||||||
|
|
||||||
|
036 001222 D1E0 L17: SHL ax, 1
|
||||||
|
037 001224 D1D2 RCL dx, 1
|
||||||
|
038 001226 D1D6 RCL si, 1
|
||||||
|
039 001228 D1D7 RCL di, 1
|
||||||
|
040 00122A 3BFD CMP di, bp
|
||||||
|
041 00122C 720B JB L18
|
||||||
|
042 00122E 7704 JA L19
|
||||||
|
043 001230 3BF3 CMP si, bx
|
||||||
|
044 001232 7205 JB L18
|
||||||
|
|
||||||
|
045 001234 2BF3 L19: SUB si, bx
|
||||||
|
046 001236 1BFD SBB di, bp
|
||||||
|
047 001238 40 INC ax
|
||||||
|
|
||||||
|
048 001239 E2E7 L18: LOOP L17
|
||||||
|
049 00123B 5B POP bx
|
||||||
|
050 00123C F7C30200 TEST bx, 2
|
||||||
|
051 001240 7406 JE L20
|
||||||
|
052 001242 8BC6 MOV ax, si
|
||||||
|
053 001244 8BD7 MOV dx, di
|
||||||
|
054 001246 D1EB SHR bx, 1
|
||||||
|
|
||||||
|
055 001248 F7C30400 L20: TEST bx, 4
|
||||||
|
056 00124C 7407 JE L21
|
||||||
|
057 00124E F7DA NEG dx
|
||||||
|
058 001250 F7D8 NEG ax
|
||||||
|
059 001252 83DA00 SBB dx, 0
|
||||||
|
|
||||||
|
060 001255 5F L21: POP di
|
||||||
|
061 001256 5E POP si
|
||||||
|
062 001257 5D POP bp
|
||||||
|
063 001258 CA0800 RETF 8
|
||||||
|
|
||||||
|
064 L14: MOV tmp, dx:ax ;Synthetic inst
|
||||||
|
065 00125B F7F3 DIV bx
|
||||||
|
066 MOD bx ;Synthetic inst
|
||||||
|
067 00125D F7C70200 TEST di, 2
|
||||||
|
068 001261 7402 JE L22
|
||||||
|
069 001263 8BC2 MOV ax, dx
|
||||||
|
|
||||||
|
070 001265 33D2 L22: XOR dx, dx
|
||||||
|
071 001267 EBEC JMP L21
|
||||||
|
|
||||||
|
LDIV@ ENDP
|
||||||
|
|
||||||
|
LXMUL@ PROC FAR
|
||||||
|
000 0009C3 56 PUSH si
|
||||||
|
001 MOV tmp, ax ;Synthetic inst
|
||||||
|
002 MOV ax, si ;Synthetic inst
|
||||||
|
003 MOV si, tmp ;Synthetic inst
|
||||||
|
004 MOV tmp, ax ;Synthetic inst
|
||||||
|
005 MOV ax, dx ;Synthetic inst
|
||||||
|
006 MOV dx, tmp ;Synthetic inst
|
||||||
|
007 0009C6 85C0 TEST ax, ax
|
||||||
|
008 0009C8 7402 JE L23
|
||||||
|
009 0009CA F7E3 MUL bx
|
||||||
|
|
||||||
|
010 L23: MOV tmp, ax ;Synthetic inst
|
||||||
|
011 MOV ax, cx ;Synthetic inst
|
||||||
|
012 MOV cx, tmp ;Synthetic inst
|
||||||
|
013 0009CD 85C0 TEST ax, ax
|
||||||
|
014 0009CF 7404 JE L24
|
||||||
|
015 0009D1 F7E6 MUL si
|
||||||
|
016 0009D3 03C8 ADD cx, ax
|
||||||
|
|
||||||
|
017 L24: MOV tmp, ax ;Synthetic inst
|
||||||
|
018 MOV ax, si ;Synthetic inst
|
||||||
|
019 MOV si, tmp ;Synthetic inst
|
||||||
|
020 0009D6 F7E3 MUL bx
|
||||||
|
021 0009D8 03D1 ADD dx, cx
|
||||||
|
022 0009DA 5E POP si
|
||||||
|
023 0009DB CB RETF
|
||||||
|
|
||||||
|
LXMUL@ ENDP
|
||||||
|
|
||||||
|
main PROC NEAR
|
||||||
|
000 0002FA 55 PUSH bp
|
||||||
|
001 0002FB 8BEC MOV bp, sp
|
||||||
|
002 0002FD 83EC08 SUB sp, 8
|
||||||
|
003 000300 C746FA0000 MOV word ptr [bp-6], 0
|
||||||
|
004 000305 C746F8FF00 MOV word ptr [bp-8], 0FFh
|
||||||
|
005 00030A C746FE0000 MOV word ptr [bp-2], 0
|
||||||
|
006 00030F C746FC8F00 MOV word ptr [bp-4], 8Fh
|
||||||
|
007 000314 8B56FA MOV dx, [bp-6]
|
||||||
|
008 000317 8B46F8 MOV ax, [bp-8]
|
||||||
|
009 00031A 0346FC ADD ax, [bp-4]
|
||||||
|
010 00031D 1356FE ADC dx, [bp-2]
|
||||||
|
011 000320 8956FE MOV [bp-2], dx
|
||||||
|
012 000323 8946FC MOV [bp-4], ax
|
||||||
|
013 000326 8B56FA MOV dx, [bp-6]
|
||||||
|
014 000329 8B46F8 MOV ax, [bp-8]
|
||||||
|
015 00032C 2B46FC SUB ax, [bp-4]
|
||||||
|
016 00032F 1B56FE SBB dx, [bp-2]
|
||||||
|
017 000332 8956FA MOV [bp-6], dx
|
||||||
|
018 000335 8946F8 MOV [bp-8], ax
|
||||||
|
019 000338 8B56FA MOV dx, [bp-6]
|
||||||
|
020 00033B 8B46F8 MOV ax, [bp-8]
|
||||||
|
021 00033E 8B4EFE MOV cx, [bp-2]
|
||||||
|
022 000341 8B5EFC MOV bx, [bp-4]
|
||||||
|
023 000344 9AC3081000 CALL far ptr LXMUL@
|
||||||
|
024 000349 8956FA MOV [bp-6], dx
|
||||||
|
025 00034C 8946F8 MOV [bp-8], ax
|
||||||
|
026 00034F FF76FA PUSH word ptr [bp-6]
|
||||||
|
027 000352 FF76F8 PUSH word ptr [bp-8]
|
||||||
|
028 000355 FF76FE PUSH word ptr [bp-2]
|
||||||
|
029 000358 FF76FC PUSH word ptr [bp-4]
|
||||||
|
030 00035B 9AC6101000 CALL far ptr LDIV@
|
||||||
|
031 000360 8956FE MOV [bp-2], dx
|
||||||
|
032 000363 8946FC MOV [bp-4], ax
|
||||||
|
033 000366 FF76FA PUSH word ptr [bp-6]
|
||||||
|
034 000369 FF76F8 PUSH word ptr [bp-8]
|
||||||
|
035 00036C FF76FE PUSH word ptr [bp-2]
|
||||||
|
036 00036F FF76FC PUSH word ptr [bp-4]
|
||||||
|
037 000372 9ACF101000 CALL far ptr LMOD@
|
||||||
|
038 000377 8956FE MOV [bp-2], dx
|
||||||
|
039 00037A 8946FC MOV [bp-4], ax
|
||||||
|
040 00037D 8B56FA MOV dx, [bp-6]
|
||||||
|
041 000380 8B46F8 MOV ax, [bp-8]
|
||||||
|
042 000383 B105 MOV cl, 5
|
||||||
|
043 000385 9A87111000 CALL far ptr LXLSH@
|
||||||
|
044 00038A 8956FA MOV [bp-6], dx
|
||||||
|
045 00038D 8946F8 MOV [bp-8], ax
|
||||||
|
046 000390 8B56FE MOV dx, [bp-2]
|
||||||
|
047 000393 8B46FC MOV ax, [bp-4]
|
||||||
|
048 000396 8A4EF8 MOV cl, [bp-8]
|
||||||
|
049 000399 9A69111000 CALL far ptr LXRSH@
|
||||||
|
050 00039E 8956FE MOV [bp-2], dx
|
||||||
|
051 0003A1 8946FC MOV [bp-4], ax
|
||||||
|
052 0003A4 FF76FE PUSH word ptr [bp-2]
|
||||||
|
053 0003A7 FF76FC PUSH word ptr [bp-4]
|
||||||
|
054 0003AA FF76FA PUSH word ptr [bp-6]
|
||||||
|
055 0003AD FF76F8 PUSH word ptr [bp-8]
|
||||||
|
056 0003B0 B89401 MOV ax, 194h
|
||||||
|
057 0003B3 50 PUSH ax
|
||||||
|
058 0003B4 E8C406 CALL near ptr printf
|
||||||
|
059 0003B7 83C40A ADD sp, 0Ah
|
||||||
|
060 0003BA 8BE5 MOV sp, bp
|
||||||
|
061 0003BC 5D POP bp
|
||||||
|
062 0003BD C3 RET
|
||||||
|
|
||||||
|
main ENDP
|
||||||
|
|
||||||
294
tests/prev_base/LONGOPS.b
Normal file
294
tests/prev_base/LONGOPS.b
Normal file
@ -0,0 +1,294 @@
|
|||||||
|
/*
|
||||||
|
* Input file : ./tests/inputs/LONGOPS.EXE
|
||||||
|
* File type : EXE
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include "dcc.h"
|
||||||
|
|
||||||
|
|
||||||
|
long LXMUL@ (long arg0, long arg1)
|
||||||
|
/* Uses register arguments:
|
||||||
|
* arg0 = dx:ax.
|
||||||
|
* arg1 = cx:bx.
|
||||||
|
* Runtime support routine of the compiler.
|
||||||
|
*/
|
||||||
|
{
|
||||||
|
int loc1;
|
||||||
|
int loc2; /* tmp */
|
||||||
|
loc2 = LO(arg0);
|
||||||
|
LO(arg0) = loc1;
|
||||||
|
loc1 = loc2;
|
||||||
|
loc2 = LO(arg0);
|
||||||
|
LO(arg0) = HI(arg0);
|
||||||
|
|
||||||
|
if ((LO(arg0) & LO(arg0)) != 0) {
|
||||||
|
}
|
||||||
|
loc2 = LO(arg0);
|
||||||
|
LO(arg0) = HI(arg1);
|
||||||
|
HI(arg1) = loc2;
|
||||||
|
|
||||||
|
if ((LO(arg0) & LO(arg0)) != 0) {
|
||||||
|
LO(arg0) = (LO(arg0) * loc1);
|
||||||
|
HI(arg1) = (HI(arg1) + LO(arg0));
|
||||||
|
}
|
||||||
|
loc2 = LO(arg0);
|
||||||
|
arg0 = (loc1 * LO(arg1));
|
||||||
|
HI(arg0) = (HI(arg0) + HI(arg1));
|
||||||
|
return (arg0);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
long LDIV@ (long arg0, int arg3)
|
||||||
|
/* Takes 8 bytes of parameters.
|
||||||
|
* Runtime support routine of the compiler.
|
||||||
|
* High-level language prologue code.
|
||||||
|
* Untranslatable routine. Assembler provided.
|
||||||
|
* Return value in registers dx:ax.
|
||||||
|
* Pascal calling convention.
|
||||||
|
*/
|
||||||
|
{
|
||||||
|
XOR cx, 0
|
||||||
|
PUSH bp
|
||||||
|
PUSH si
|
||||||
|
PUSH di
|
||||||
|
MOV bp, sp
|
||||||
|
MOV di, cx
|
||||||
|
MOV ax, [bp+0Ah]
|
||||||
|
MOV dx, [bp+0Ch]
|
||||||
|
MOV bx, [bp+0Eh]
|
||||||
|
MOV cx, [bp+10h]
|
||||||
|
CMP cx, 0
|
||||||
|
JNE L1
|
||||||
|
OR dx, dx
|
||||||
|
JE L2
|
||||||
|
OR bx, bx
|
||||||
|
JE L2
|
||||||
|
|
||||||
|
L1: TEST di, 1
|
||||||
|
JNE L3
|
||||||
|
OR dx, dx
|
||||||
|
JNS L4
|
||||||
|
NEG dx
|
||||||
|
NEG ax
|
||||||
|
SBB dx, 0
|
||||||
|
OR di, 0Ch
|
||||||
|
|
||||||
|
L4: OR cx, cx
|
||||||
|
JNS L3
|
||||||
|
NEG cx
|
||||||
|
NEG bx
|
||||||
|
SBB cx, 0
|
||||||
|
XOR di, 4
|
||||||
|
|
||||||
|
L3: MOV bp, cx
|
||||||
|
MOV cx, 20h
|
||||||
|
PUSH di
|
||||||
|
XOR di, 0
|
||||||
|
XOR si, 0
|
||||||
|
|
||||||
|
L5: SHL ax, 1
|
||||||
|
RCL dx, 1
|
||||||
|
RCL si, 1
|
||||||
|
RCL di, 1
|
||||||
|
CMP di, bp
|
||||||
|
JB L6
|
||||||
|
JA L7
|
||||||
|
CMP si, bx
|
||||||
|
JB L6
|
||||||
|
|
||||||
|
L7: SUB si, bx
|
||||||
|
SBB di, bp
|
||||||
|
INC ax
|
||||||
|
|
||||||
|
L6: LOOP L5
|
||||||
|
POP bx
|
||||||
|
TEST bx, 2
|
||||||
|
JE L8
|
||||||
|
MOV ax, si
|
||||||
|
MOV dx, di
|
||||||
|
SHR bx, 1
|
||||||
|
|
||||||
|
L8: TEST bx, 4
|
||||||
|
JE L9
|
||||||
|
NEG dx
|
||||||
|
NEG ax
|
||||||
|
SBB dx, 0
|
||||||
|
|
||||||
|
L9: POP di
|
||||||
|
POP si
|
||||||
|
POP bp
|
||||||
|
RETF 8
|
||||||
|
|
||||||
|
L2: MOV tmp, dx:ax ;Synthetic inst
|
||||||
|
DIV bx
|
||||||
|
MOD bx ;Synthetic inst
|
||||||
|
TEST di, 2
|
||||||
|
JE L10
|
||||||
|
MOV ax, dx
|
||||||
|
|
||||||
|
L10: XOR dx, dx
|
||||||
|
JMP L9
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
long LMOD@ (long arg0, int arg3)
|
||||||
|
/* Takes 8 bytes of parameters.
|
||||||
|
* Runtime support routine of the compiler.
|
||||||
|
* High-level language prologue code.
|
||||||
|
* Untranslatable routine. Assembler provided.
|
||||||
|
* Return value in registers dx:ax.
|
||||||
|
* Pascal calling convention.
|
||||||
|
*/
|
||||||
|
{
|
||||||
|
MOV cx, 2
|
||||||
|
PUSH bp
|
||||||
|
PUSH si
|
||||||
|
PUSH di
|
||||||
|
MOV bp, sp
|
||||||
|
MOV di, cx
|
||||||
|
MOV ax, [bp+0Ah]
|
||||||
|
MOV dx, [bp+0Ch]
|
||||||
|
MOV bx, [bp+0Eh]
|
||||||
|
MOV cx, [bp+10h]
|
||||||
|
CMP cx, 0
|
||||||
|
JNE L1
|
||||||
|
OR dx, dx
|
||||||
|
JE L2
|
||||||
|
OR bx, bx
|
||||||
|
JE L2
|
||||||
|
|
||||||
|
L1: TEST di, 1
|
||||||
|
JNE L3
|
||||||
|
OR dx, dx
|
||||||
|
JNS L4
|
||||||
|
NEG dx
|
||||||
|
NEG ax
|
||||||
|
SBB dx, 0
|
||||||
|
OR di, 0Ch
|
||||||
|
|
||||||
|
L4: OR cx, cx
|
||||||
|
JNS L3
|
||||||
|
NEG cx
|
||||||
|
NEG bx
|
||||||
|
SBB cx, 0
|
||||||
|
XOR di, 4
|
||||||
|
|
||||||
|
L3: MOV bp, cx
|
||||||
|
MOV cx, 20h
|
||||||
|
PUSH di
|
||||||
|
XOR di, 0
|
||||||
|
XOR si, 0
|
||||||
|
|
||||||
|
L5: SHL ax, 1
|
||||||
|
RCL dx, 1
|
||||||
|
RCL si, 1
|
||||||
|
RCL di, 1
|
||||||
|
CMP di, bp
|
||||||
|
JB L6
|
||||||
|
JA L7
|
||||||
|
CMP si, bx
|
||||||
|
JB L6
|
||||||
|
|
||||||
|
L7: SUB si, bx
|
||||||
|
SBB di, bp
|
||||||
|
INC ax
|
||||||
|
|
||||||
|
L6: LOOP L5
|
||||||
|
POP bx
|
||||||
|
TEST bx, 2
|
||||||
|
JE L8
|
||||||
|
MOV ax, si
|
||||||
|
MOV dx, di
|
||||||
|
SHR bx, 1
|
||||||
|
|
||||||
|
L8: TEST bx, 4
|
||||||
|
JE L9
|
||||||
|
NEG dx
|
||||||
|
NEG ax
|
||||||
|
SBB dx, 0
|
||||||
|
|
||||||
|
L9: POP di
|
||||||
|
POP si
|
||||||
|
POP bp
|
||||||
|
RETF 8
|
||||||
|
|
||||||
|
L2: MOV tmp, dx:ax ;Synthetic inst
|
||||||
|
DIV bx
|
||||||
|
MOD bx ;Synthetic inst
|
||||||
|
TEST di, 2
|
||||||
|
JE L10
|
||||||
|
MOV ax, dx
|
||||||
|
|
||||||
|
L10: XOR dx, dx
|
||||||
|
JMP L9
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
long LXLSH@ (long arg0, char arg1)
|
||||||
|
/* Uses register arguments:
|
||||||
|
* arg0 = dx:ax.
|
||||||
|
* arg1 = cl.
|
||||||
|
* Runtime support routine of the compiler.
|
||||||
|
*/
|
||||||
|
{
|
||||||
|
int loc1; /* bx */
|
||||||
|
|
||||||
|
if (arg1 < 16) {
|
||||||
|
loc1 = LO(arg0);
|
||||||
|
LO(arg0) = (LO(arg0) << arg1);
|
||||||
|
HI(arg0) = (HI(arg0) << arg1);
|
||||||
|
HI(arg0) = (HI(arg0) | (loc1 >> (!arg1 + 16)));
|
||||||
|
return (arg0);
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
HI(arg0) = LO(arg0);
|
||||||
|
LO(arg0) = 0;
|
||||||
|
HI(arg0) = (HI(arg0) << (arg1 - 16));
|
||||||
|
return (arg0);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
long LXRSH@ (long arg0, char arg1)
|
||||||
|
/* Uses register arguments:
|
||||||
|
* arg0 = dx:ax.
|
||||||
|
* arg1 = cl.
|
||||||
|
* Runtime support routine of the compiler.
|
||||||
|
*/
|
||||||
|
{
|
||||||
|
int loc1; /* bx */
|
||||||
|
|
||||||
|
if (arg1 < 16) {
|
||||||
|
loc1 = HI(arg0);
|
||||||
|
LO(arg0) = (LO(arg0) >> arg1);
|
||||||
|
HI(arg0) = (HI(arg0) >> arg1);
|
||||||
|
LO(arg0) = (LO(arg0) | (loc1 << (!arg1 + 16)));
|
||||||
|
return (arg0);
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
arg0 = HI(arg0);
|
||||||
|
LO(arg0) = (LO(arg0) >> (arg1 - 16));
|
||||||
|
return (arg0);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void main ()
|
||||||
|
/* Takes no parameters.
|
||||||
|
* High-level language prologue code.
|
||||||
|
*/
|
||||||
|
{
|
||||||
|
long loc1;
|
||||||
|
long loc2;
|
||||||
|
loc2 = 255;
|
||||||
|
loc1 = 143;
|
||||||
|
loc1 = (loc2 + loc1);
|
||||||
|
loc2 = (loc2 - loc1);
|
||||||
|
loc2 = LXMUL@ (loc2, loc1);
|
||||||
|
loc1 = LDIV@ (loc1, loc2);
|
||||||
|
loc1 = LMOD@ (loc1, loc2);
|
||||||
|
loc2 = LXLSH@ (loc2, 5);
|
||||||
|
loc1 = LXRSH@ (loc1, loc1);
|
||||||
|
printf ("a = %ld, b = %ld\n", loc2, loc1);
|
||||||
|
}
|
||||||
|
|
||||||
98
tests/prev_base/MATRIXMU.EXE.a1
Normal file
98
tests/prev_base/MATRIXMU.EXE.a1
Normal file
@ -0,0 +1,98 @@
|
|||||||
|
main PROC NEAR
|
||||||
|
000 000383 55 PUSH bp
|
||||||
|
001 000384 8BEC MOV bp, sp
|
||||||
|
002 000386 83EC78 SUB sp, 78h
|
||||||
|
003 000389 8D46D8 LEA ax, [bp-28h]
|
||||||
|
004 00038C 50 PUSH ax
|
||||||
|
005 00038D 8D46B0 LEA ax, [bp-50h]
|
||||||
|
006 000390 50 PUSH ax
|
||||||
|
007 000391 8D4688 LEA ax, [bp-78h]
|
||||||
|
008 000394 50 PUSH ax
|
||||||
|
009 000395 E862FF CALL near ptr proc_1
|
||||||
|
010 000398 83C406 ADD sp, 6
|
||||||
|
011 00039B 8BE5 MOV sp, bp
|
||||||
|
012 00039D 5D POP bp
|
||||||
|
013 00039E C3 RET
|
||||||
|
|
||||||
|
main ENDP
|
||||||
|
|
||||||
|
proc_1 PROC NEAR
|
||||||
|
000 0002FA 55 PUSH bp
|
||||||
|
001 0002FB 8BEC MOV bp, sp
|
||||||
|
002 0002FD 83EC02 SUB sp, 2
|
||||||
|
003 000300 56 PUSH si
|
||||||
|
004 000301 57 PUSH di
|
||||||
|
005 000302 33F6 XOR si, si
|
||||||
|
006 000304 EB72 JMP L1
|
||||||
|
|
||||||
|
007 000378 83FE05 L1: CMP si, 5
|
||||||
|
008 00037B 7C89 JL L2
|
||||||
|
009 00037D 5F POP di
|
||||||
|
010 00037E 5E POP si
|
||||||
|
011 00037F 8BE5 MOV sp, bp
|
||||||
|
012 000381 5D POP bp
|
||||||
|
013 000382 C3 RET
|
||||||
|
|
||||||
|
014 000306 33FF L2: XOR di, di
|
||||||
|
015 000308 EB68 JMP L3
|
||||||
|
|
||||||
|
016 000372 83FF04 L3: CMP di, 4
|
||||||
|
017 000375 7C93 JL L4
|
||||||
|
018 000377 46 INC si
|
||||||
|
019 JMP L1 ;Synthetic inst
|
||||||
|
|
||||||
|
020 00030A C746FE0000 L4: MOV word ptr [bp-2], 0
|
||||||
|
021 00030F EB5A JMP L5
|
||||||
|
|
||||||
|
022 00036B 837EFE04 L5: CMP word ptr [bp-2], 4
|
||||||
|
023 00036F 7CA0 JL L6
|
||||||
|
024 000371 47 INC di
|
||||||
|
025 JMP L3 ;Synthetic inst
|
||||||
|
|
||||||
|
026 000311 8BDE L6: MOV bx, si
|
||||||
|
027 000313 D1E3 SHL bx, 1
|
||||||
|
028 000315 D1E3 SHL bx, 1
|
||||||
|
029 000317 D1E3 SHL bx, 1
|
||||||
|
030 000319 035E04 ADD bx, [bp+4]
|
||||||
|
031 00031C 8B46FE MOV ax, [bp-2]
|
||||||
|
032 00031F D1E0 SHL ax, 1
|
||||||
|
033 000321 03D8 ADD bx, ax
|
||||||
|
034 000323 8B07 MOV ax, [bx]
|
||||||
|
035 000325 50 PUSH ax
|
||||||
|
036 000326 8B46FE MOV ax, [bp-2]
|
||||||
|
037 000329 BA0A00 MOV dx, 0Ah
|
||||||
|
038 00032C F7E2 MUL dx
|
||||||
|
039 00032E 8BD8 MOV bx, ax
|
||||||
|
040 000330 035E06 ADD bx, [bp+6]
|
||||||
|
041 000333 8BC7 MOV ax, di
|
||||||
|
042 000335 D1E0 SHL ax, 1
|
||||||
|
043 000337 03D8 ADD bx, ax
|
||||||
|
044 000339 58 POP ax
|
||||||
|
045 00033A F727 MUL word ptr [bx]
|
||||||
|
046 00033C 50 PUSH ax
|
||||||
|
047 00033D 8BC6 MOV ax, si
|
||||||
|
048 00033F BA0A00 MOV dx, 0Ah
|
||||||
|
049 000342 F7E2 MUL dx
|
||||||
|
050 000344 8BD8 MOV bx, ax
|
||||||
|
051 000346 035E08 ADD bx, [bp+8]
|
||||||
|
052 000349 8BC7 MOV ax, di
|
||||||
|
053 00034B D1E0 SHL ax, 1
|
||||||
|
054 00034D 03D8 ADD bx, ax
|
||||||
|
055 00034F 58 POP ax
|
||||||
|
056 000350 0307 ADD ax, [bx]
|
||||||
|
057 000352 50 PUSH ax
|
||||||
|
058 000353 8BC6 MOV ax, si
|
||||||
|
059 000355 BA0A00 MOV dx, 0Ah
|
||||||
|
060 000358 F7E2 MUL dx
|
||||||
|
061 00035A 8BD8 MOV bx, ax
|
||||||
|
062 00035C 035E08 ADD bx, [bp+8]
|
||||||
|
063 00035F 8BC7 MOV ax, di
|
||||||
|
064 000361 D1E0 SHL ax, 1
|
||||||
|
065 000363 03D8 ADD bx, ax
|
||||||
|
066 000365 58 POP ax
|
||||||
|
067 000366 8907 MOV [bx], ax
|
||||||
|
068 000368 FF46FE INC word ptr [bp-2]
|
||||||
|
069 JMP L5 ;Synthetic inst
|
||||||
|
|
||||||
|
proc_1 ENDP
|
||||||
|
|
||||||
95
tests/prev_base/MATRIXMU.EXE.a2
Normal file
95
tests/prev_base/MATRIXMU.EXE.a2
Normal file
@ -0,0 +1,95 @@
|
|||||||
|
proc_1 PROC NEAR
|
||||||
|
000 0002FA 55 PUSH bp
|
||||||
|
001 0002FB 8BEC MOV bp, sp
|
||||||
|
002 0002FD 83EC02 SUB sp, 2
|
||||||
|
003 000300 56 PUSH si
|
||||||
|
004 000301 57 PUSH di
|
||||||
|
005 000302 33F6 XOR si, si
|
||||||
|
|
||||||
|
007 000378 83FE05 L1: CMP si, 5
|
||||||
|
008 00037B 7C89 JL L2
|
||||||
|
009 00037D 5F POP di
|
||||||
|
010 00037E 5E POP si
|
||||||
|
011 00037F 8BE5 MOV sp, bp
|
||||||
|
012 000381 5D POP bp
|
||||||
|
013 000382 C3 RET
|
||||||
|
|
||||||
|
014 000306 33FF L2: XOR di, di
|
||||||
|
|
||||||
|
016 000372 83FF04 L3: CMP di, 4
|
||||||
|
017 000375 7C93 JL L4
|
||||||
|
018 000377 46 INC si
|
||||||
|
019 JMP L1 ;Synthetic inst
|
||||||
|
|
||||||
|
020 00030A C746FE0000 L4: MOV word ptr [bp-2], 0
|
||||||
|
|
||||||
|
022 00036B 837EFE04 L5: CMP word ptr [bp-2], 4
|
||||||
|
023 00036F 7CA0 JL L6
|
||||||
|
024 000371 47 INC di
|
||||||
|
025 JMP L3 ;Synthetic inst
|
||||||
|
|
||||||
|
026 000311 8BDE L6: MOV bx, si
|
||||||
|
027 000313 D1E3 SHL bx, 1
|
||||||
|
028 000315 D1E3 SHL bx, 1
|
||||||
|
029 000317 D1E3 SHL bx, 1
|
||||||
|
030 000319 035E04 ADD bx, [bp+4]
|
||||||
|
031 00031C 8B46FE MOV ax, [bp-2]
|
||||||
|
032 00031F D1E0 SHL ax, 1
|
||||||
|
033 000321 03D8 ADD bx, ax
|
||||||
|
034 000323 8B07 MOV ax, [bx]
|
||||||
|
035 000325 50 PUSH ax
|
||||||
|
036 000326 8B46FE MOV ax, [bp-2]
|
||||||
|
037 000329 BA0A00 MOV dx, 0Ah
|
||||||
|
038 00032C F7E2 MUL dx
|
||||||
|
039 00032E 8BD8 MOV bx, ax
|
||||||
|
040 000330 035E06 ADD bx, [bp+6]
|
||||||
|
041 000333 8BC7 MOV ax, di
|
||||||
|
042 000335 D1E0 SHL ax, 1
|
||||||
|
043 000337 03D8 ADD bx, ax
|
||||||
|
044 000339 58 POP ax
|
||||||
|
045 00033A F727 MUL word ptr [bx]
|
||||||
|
046 00033C 50 PUSH ax
|
||||||
|
047 00033D 8BC6 MOV ax, si
|
||||||
|
048 00033F BA0A00 MOV dx, 0Ah
|
||||||
|
049 000342 F7E2 MUL dx
|
||||||
|
050 000344 8BD8 MOV bx, ax
|
||||||
|
051 000346 035E08 ADD bx, [bp+8]
|
||||||
|
052 000349 8BC7 MOV ax, di
|
||||||
|
053 00034B D1E0 SHL ax, 1
|
||||||
|
054 00034D 03D8 ADD bx, ax
|
||||||
|
055 00034F 58 POP ax
|
||||||
|
056 000350 0307 ADD ax, [bx]
|
||||||
|
057 000352 50 PUSH ax
|
||||||
|
058 000353 8BC6 MOV ax, si
|
||||||
|
059 000355 BA0A00 MOV dx, 0Ah
|
||||||
|
060 000358 F7E2 MUL dx
|
||||||
|
061 00035A 8BD8 MOV bx, ax
|
||||||
|
062 00035C 035E08 ADD bx, [bp+8]
|
||||||
|
063 00035F 8BC7 MOV ax, di
|
||||||
|
064 000361 D1E0 SHL ax, 1
|
||||||
|
065 000363 03D8 ADD bx, ax
|
||||||
|
066 000365 58 POP ax
|
||||||
|
067 000366 8907 MOV [bx], ax
|
||||||
|
068 000368 FF46FE INC word ptr [bp-2]
|
||||||
|
069 JMP L5 ;Synthetic inst
|
||||||
|
|
||||||
|
proc_1 ENDP
|
||||||
|
|
||||||
|
main PROC NEAR
|
||||||
|
000 000383 55 PUSH bp
|
||||||
|
001 000384 8BEC MOV bp, sp
|
||||||
|
002 000386 83EC78 SUB sp, 78h
|
||||||
|
003 000389 8D46D8 LEA ax, [bp-28h]
|
||||||
|
004 00038C 50 PUSH ax
|
||||||
|
005 00038D 8D46B0 LEA ax, [bp-50h]
|
||||||
|
006 000390 50 PUSH ax
|
||||||
|
007 000391 8D4688 LEA ax, [bp-78h]
|
||||||
|
008 000394 50 PUSH ax
|
||||||
|
009 000395 E862FF CALL near ptr proc_1
|
||||||
|
010 000398 83C406 ADD sp, 6
|
||||||
|
011 00039B 8BE5 MOV sp, bp
|
||||||
|
012 00039D 5D POP bp
|
||||||
|
013 00039E C3 RET
|
||||||
|
|
||||||
|
main ENDP
|
||||||
|
|
||||||
47
tests/prev_base/MATRIXMU.b
Normal file
47
tests/prev_base/MATRIXMU.b
Normal file
@ -0,0 +1,47 @@
|
|||||||
|
/*
|
||||||
|
* Input file : ./tests/inputs/MATRIXMU.EXE
|
||||||
|
* File type : EXE
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include "dcc.h"
|
||||||
|
|
||||||
|
|
||||||
|
void proc_1 (int arg0, int arg1, int arg2)
|
||||||
|
/* Takes 6 bytes of parameters.
|
||||||
|
* High-level language prologue code.
|
||||||
|
* C calling convention.
|
||||||
|
*/
|
||||||
|
{
|
||||||
|
int loc1;
|
||||||
|
int loc2;
|
||||||
|
int loc3;
|
||||||
|
loc2 = 0;
|
||||||
|
|
||||||
|
while ((loc2 < 5)) {
|
||||||
|
loc3 = 0;
|
||||||
|
|
||||||
|
while ((loc3 < 4)) {
|
||||||
|
loc1 = 0;
|
||||||
|
|
||||||
|
while ((loc1 < 4)) {
|
||||||
|
*((((loc2 * 10) + arg2) + (loc3 << 1))) = ((*(((((loc2 << 3) << 1) + arg0) + (loc1 << 1))) * *((((loc1 * 10) + arg1) + (loc3 << 1)))) + *((((loc2 * 10) + arg2) + (loc3 << 1))));
|
||||||
|
loc1 = (loc1 + 1);
|
||||||
|
} /* end of while */
|
||||||
|
loc3 = (loc3 + 1);
|
||||||
|
} /* end of while */
|
||||||
|
loc2 = (loc2 + 1);
|
||||||
|
} /* end of while */
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void main ()
|
||||||
|
/* Takes no parameters.
|
||||||
|
* High-level language prologue code.
|
||||||
|
*/
|
||||||
|
{
|
||||||
|
int loc1;
|
||||||
|
int loc2;
|
||||||
|
int loc3;
|
||||||
|
proc_1 (&loc3, &loc2, &loc1);
|
||||||
|
}
|
||||||
|
|
||||||
54
tests/prev_base/MAX.EXE.a1
Normal file
54
tests/prev_base/MAX.EXE.a1
Normal file
@ -0,0 +1,54 @@
|
|||||||
|
main PROC NEAR
|
||||||
|
000 0002FA 55 PUSH bp
|
||||||
|
001 0002FB 8BEC MOV bp, sp
|
||||||
|
002 0002FD 83EC04 SUB sp, 4
|
||||||
|
003 000300 B89401 MOV ax, 194h
|
||||||
|
004 000303 50 PUSH ax
|
||||||
|
005 000304 E8D10B CALL near ptr printf
|
||||||
|
006 000307 59 POP cx
|
||||||
|
007 000308 8D46FE LEA ax, [bp-2]
|
||||||
|
008 00030B 50 PUSH ax
|
||||||
|
009 00030C 8D46FC LEA ax, [bp-4]
|
||||||
|
010 00030F 50 PUSH ax
|
||||||
|
011 000310 B8A601 MOV ax, 1A6h
|
||||||
|
012 000313 50 PUSH ax
|
||||||
|
013 000314 E84A14 CALL near ptr scanf
|
||||||
|
014 000317 83C406 ADD sp, 6
|
||||||
|
015 00031A 8B46FC MOV ax, [bp-4]
|
||||||
|
016 00031D 3B46FE CMP ax, [bp-2]
|
||||||
|
017 000320 7415 JE L1
|
||||||
|
018 000322 FF76FE PUSH word ptr [bp-2]
|
||||||
|
019 000325 FF76FC PUSH word ptr [bp-4]
|
||||||
|
020 000328 E81000 CALL near ptr proc_1
|
||||||
|
021 00032B 59 POP cx
|
||||||
|
022 00032C 59 POP cx
|
||||||
|
023 00032D 50 PUSH ax
|
||||||
|
024 00032E B8AC01 MOV ax, 1ACh
|
||||||
|
025 000331 50 PUSH ax
|
||||||
|
026 000332 E8A30B CALL near ptr printf
|
||||||
|
027 000335 59 POP cx
|
||||||
|
028 000336 59 POP cx
|
||||||
|
|
||||||
|
029 000337 8BE5 L1: MOV sp, bp
|
||||||
|
030 000339 5D POP bp
|
||||||
|
031 00033A C3 RET
|
||||||
|
|
||||||
|
main ENDP
|
||||||
|
|
||||||
|
proc_1 PROC NEAR
|
||||||
|
000 00033B 55 PUSH bp
|
||||||
|
001 00033C 8BEC MOV bp, sp
|
||||||
|
002 00033E 8B4604 MOV ax, [bp+4]
|
||||||
|
003 000341 3B4606 CMP ax, [bp+6]
|
||||||
|
004 000344 7E05 JLE L2
|
||||||
|
005 000346 8B4604 MOV ax, [bp+4]
|
||||||
|
006 000349 EB05 JMP L3
|
||||||
|
|
||||||
|
007 000350 5D L3: POP bp
|
||||||
|
008 000351 C3 RET
|
||||||
|
|
||||||
|
009 00034B 8B4606 L2: MOV ax, [bp+6]
|
||||||
|
010 00034E EB00 JMP L3
|
||||||
|
|
||||||
|
proc_1 ENDP
|
||||||
|
|
||||||
53
tests/prev_base/MAX.EXE.a2
Normal file
53
tests/prev_base/MAX.EXE.a2
Normal file
@ -0,0 +1,53 @@
|
|||||||
|
proc_1 PROC NEAR
|
||||||
|
000 00033B 55 PUSH bp
|
||||||
|
001 00033C 8BEC MOV bp, sp
|
||||||
|
002 00033E 8B4604 MOV ax, [bp+4]
|
||||||
|
003 000341 3B4606 CMP ax, [bp+6]
|
||||||
|
004 000344 7E05 JLE L1
|
||||||
|
005 000346 8B4604 MOV ax, [bp+4]
|
||||||
|
|
||||||
|
007 000350 5D L2: POP bp
|
||||||
|
008 000351 C3 RET
|
||||||
|
|
||||||
|
009 00034B 8B4606 L1: MOV ax, [bp+6]
|
||||||
|
010 00034E EB00 JMP L2
|
||||||
|
|
||||||
|
proc_1 ENDP
|
||||||
|
|
||||||
|
main PROC NEAR
|
||||||
|
000 0002FA 55 PUSH bp
|
||||||
|
001 0002FB 8BEC MOV bp, sp
|
||||||
|
002 0002FD 83EC04 SUB sp, 4
|
||||||
|
003 000300 B89401 MOV ax, 194h
|
||||||
|
004 000303 50 PUSH ax
|
||||||
|
005 000304 E8D10B CALL near ptr printf
|
||||||
|
006 000307 59 POP cx
|
||||||
|
007 000308 8D46FE LEA ax, [bp-2]
|
||||||
|
008 00030B 50 PUSH ax
|
||||||
|
009 00030C 8D46FC LEA ax, [bp-4]
|
||||||
|
010 00030F 50 PUSH ax
|
||||||
|
011 000310 B8A601 MOV ax, 1A6h
|
||||||
|
012 000313 50 PUSH ax
|
||||||
|
013 000314 E84A14 CALL near ptr scanf
|
||||||
|
014 000317 83C406 ADD sp, 6
|
||||||
|
015 00031A 8B46FC MOV ax, [bp-4]
|
||||||
|
016 00031D 3B46FE CMP ax, [bp-2]
|
||||||
|
017 000320 7415 JE L3
|
||||||
|
018 000322 FF76FE PUSH word ptr [bp-2]
|
||||||
|
019 000325 FF76FC PUSH word ptr [bp-4]
|
||||||
|
020 000328 E81000 CALL near ptr proc_1
|
||||||
|
021 00032B 59 POP cx
|
||||||
|
022 00032C 59 POP cx
|
||||||
|
023 00032D 50 PUSH ax
|
||||||
|
024 00032E B8AC01 MOV ax, 1ACh
|
||||||
|
025 000331 50 PUSH ax
|
||||||
|
026 000332 E8A30B CALL near ptr printf
|
||||||
|
027 000335 59 POP cx
|
||||||
|
028 000336 59 POP cx
|
||||||
|
|
||||||
|
029 000337 8BE5 L3: MOV sp, bp
|
||||||
|
030 000339 5D POP bp
|
||||||
|
031 00033A C3 RET
|
||||||
|
|
||||||
|
main ENDP
|
||||||
|
|
||||||
41
tests/prev_base/MAX.b
Normal file
41
tests/prev_base/MAX.b
Normal file
@ -0,0 +1,41 @@
|
|||||||
|
/*
|
||||||
|
* Input file : ./tests/inputs/MAX.EXE
|
||||||
|
* File type : EXE
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include "dcc.h"
|
||||||
|
|
||||||
|
|
||||||
|
int proc_1 (int arg0, int arg1)
|
||||||
|
/* Takes 4 bytes of parameters.
|
||||||
|
* High-level language prologue code.
|
||||||
|
* C calling convention.
|
||||||
|
*/
|
||||||
|
{
|
||||||
|
int loc1; /* ax */
|
||||||
|
|
||||||
|
if (arg0 > arg1) {
|
||||||
|
loc1 = arg0;
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
loc1 = arg1;
|
||||||
|
}
|
||||||
|
return (loc1);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void main ()
|
||||||
|
/* Takes no parameters.
|
||||||
|
* High-level language prologue code.
|
||||||
|
*/
|
||||||
|
{
|
||||||
|
int loc1;
|
||||||
|
int loc2;
|
||||||
|
printf ("Enter 2 numbers: ");
|
||||||
|
scanf ("%d %d", &loc2, &loc1);
|
||||||
|
|
||||||
|
if (loc2 != loc1) {
|
||||||
|
printf ("Maximum: %d\n", proc_1 (loc2, loc1));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
@ -14,7 +14,6 @@ void start ()
|
|||||||
int loc1;
|
int loc1;
|
||||||
int loc2; /* ax */
|
int loc2; /* ax */
|
||||||
int loc3; /* bx */
|
int loc3; /* bx */
|
||||||
|
|
||||||
loc1 = 0;
|
loc1 = 0;
|
||||||
loc2 = loc1;
|
loc2 = loc1;
|
||||||
|
|
||||||
|
|||||||
34
tests/prev_base/STRLEN.EXE.a1
Normal file
34
tests/prev_base/STRLEN.EXE.a1
Normal file
@ -0,0 +1,34 @@
|
|||||||
|
main PROC NEAR
|
||||||
|
000 0002FA 56 PUSH si
|
||||||
|
001 0002FB BE9401 MOV si, 194h
|
||||||
|
002 0002FE 56 PUSH si
|
||||||
|
003 0002FF E80300 CALL near ptr proc_1
|
||||||
|
004 000302 59 POP cx
|
||||||
|
005 000303 5E POP si
|
||||||
|
006 000304 C3 RET
|
||||||
|
|
||||||
|
main ENDP
|
||||||
|
|
||||||
|
proc_1 PROC NEAR
|
||||||
|
000 000305 55 PUSH bp
|
||||||
|
001 000306 8BEC MOV bp, sp
|
||||||
|
002 000308 56 PUSH si
|
||||||
|
003 000309 33F6 XOR si, si
|
||||||
|
004 00030B EB01 JMP L1
|
||||||
|
|
||||||
|
005 00030E 8B5E04 L1: MOV bx, [bp+4]
|
||||||
|
006 000311 FF4604 INC word ptr [bp+4]
|
||||||
|
007 000314 803F00 CMP byte ptr [bx], 0
|
||||||
|
008 000317 75F4 JNE L2
|
||||||
|
009 000319 8BC6 MOV ax, si
|
||||||
|
010 00031B EB00 JMP L3
|
||||||
|
|
||||||
|
011 00031D 5E L3: POP si
|
||||||
|
012 00031E 5D POP bp
|
||||||
|
013 00031F C3 RET
|
||||||
|
|
||||||
|
014 00030D 46 L2: INC si
|
||||||
|
015 JMP L1 ;Synthetic inst
|
||||||
|
|
||||||
|
proc_1 ENDP
|
||||||
|
|
||||||
31
tests/prev_base/STRLEN.EXE.a2
Normal file
31
tests/prev_base/STRLEN.EXE.a2
Normal file
@ -0,0 +1,31 @@
|
|||||||
|
proc_1 PROC NEAR
|
||||||
|
000 000305 55 PUSH bp
|
||||||
|
001 000306 8BEC MOV bp, sp
|
||||||
|
002 000308 56 PUSH si
|
||||||
|
003 000309 33F6 XOR si, si
|
||||||
|
|
||||||
|
005 00030E 8B5E04 L1: MOV bx, [bp+4]
|
||||||
|
006 000311 FF4604 INC word ptr [bp+4]
|
||||||
|
007 000314 803F00 CMP byte ptr [bx], 0
|
||||||
|
008 000317 75F4 JNE L2
|
||||||
|
009 000319 8BC6 MOV ax, si
|
||||||
|
011 00031D 5E POP si
|
||||||
|
012 00031E 5D POP bp
|
||||||
|
013 00031F C3 RET
|
||||||
|
|
||||||
|
014 00030D 46 L2: INC si
|
||||||
|
015 JMP L1 ;Synthetic inst
|
||||||
|
|
||||||
|
proc_1 ENDP
|
||||||
|
|
||||||
|
main PROC NEAR
|
||||||
|
000 0002FA 56 PUSH si
|
||||||
|
001 0002FB BE9401 MOV si, 194h
|
||||||
|
002 0002FE 56 PUSH si
|
||||||
|
003 0002FF E80300 CALL near ptr proc_1
|
||||||
|
004 000302 59 POP cx
|
||||||
|
005 000303 5E POP si
|
||||||
|
006 000304 C3 RET
|
||||||
|
|
||||||
|
main ENDP
|
||||||
|
|
||||||
34
tests/prev_base/STRLEN.b
Normal file
34
tests/prev_base/STRLEN.b
Normal file
@ -0,0 +1,34 @@
|
|||||||
|
/*
|
||||||
|
* Input file : ./tests/inputs/STRLEN.EXE
|
||||||
|
* File type : EXE
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include "dcc.h"
|
||||||
|
|
||||||
|
|
||||||
|
void proc_1 (int arg0)
|
||||||
|
/* Takes 2 bytes of parameters.
|
||||||
|
* High-level language prologue code.
|
||||||
|
* C calling convention.
|
||||||
|
*/
|
||||||
|
{
|
||||||
|
int loc1; /* si */
|
||||||
|
loc1 = 0;
|
||||||
|
arg0 = (arg0 + 1);
|
||||||
|
|
||||||
|
while ((*arg0 != 0)) {
|
||||||
|
loc1 = (loc1 + 1);
|
||||||
|
arg0 = (arg0 + 1);
|
||||||
|
} /* end of while */
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void main ()
|
||||||
|
/* Takes no parameters.
|
||||||
|
*/
|
||||||
|
{
|
||||||
|
int loc1;
|
||||||
|
loc1 = 404;
|
||||||
|
proc_1 (loc1);
|
||||||
|
}
|
||||||
|
|
||||||
40
tests/prev_base/TESTLONG.EXE.a1
Normal file
40
tests/prev_base/TESTLONG.EXE.a1
Normal file
@ -0,0 +1,40 @@
|
|||||||
|
main PROC NEAR
|
||||||
|
000 0002FA 55 PUSH bp
|
||||||
|
001 0002FB 8BEC MOV bp, sp
|
||||||
|
002 0002FD 83EC08 SUB sp, 8
|
||||||
|
003 000300 8D46FC LEA ax, [bp-4]
|
||||||
|
004 000303 50 PUSH ax
|
||||||
|
005 000304 B89401 MOV ax, 194h
|
||||||
|
006 000307 50 PUSH ax
|
||||||
|
007 000308 E84A14 CALL near ptr scanf
|
||||||
|
008 00030B 59 POP cx
|
||||||
|
009 00030C 59 POP cx
|
||||||
|
010 00030D 8D46F8 LEA ax, [bp-8]
|
||||||
|
011 000310 50 PUSH ax
|
||||||
|
012 000311 B89701 MOV ax, 197h
|
||||||
|
013 000314 50 PUSH ax
|
||||||
|
014 000315 E83D14 CALL near ptr scanf
|
||||||
|
015 000318 59 POP cx
|
||||||
|
016 000319 59 POP cx
|
||||||
|
017 00031A 8D46FC LEA ax, [bp-4]
|
||||||
|
018 00031D 50 PUSH ax
|
||||||
|
019 00031E 8D46F8 LEA ax, [bp-8]
|
||||||
|
020 000321 50 PUSH ax
|
||||||
|
021 000322 B89A01 MOV ax, 19Ah
|
||||||
|
022 000325 50 PUSH ax
|
||||||
|
023 000326 E82C14 CALL near ptr scanf
|
||||||
|
024 000329 83C406 ADD sp, 6
|
||||||
|
025 00032C FF76FE PUSH word ptr [bp-2]
|
||||||
|
026 00032F FF76FC PUSH word ptr [bp-4]
|
||||||
|
027 000332 FF76FA PUSH word ptr [bp-6]
|
||||||
|
028 000335 FF76F8 PUSH word ptr [bp-8]
|
||||||
|
029 000338 B8A001 MOV ax, 1A0h
|
||||||
|
030 00033B 50 PUSH ax
|
||||||
|
031 00033C E88D0B CALL near ptr printf
|
||||||
|
032 00033F 83C40A ADD sp, 0Ah
|
||||||
|
033 000342 8BE5 MOV sp, bp
|
||||||
|
034 000344 5D POP bp
|
||||||
|
035 000345 C3 RET
|
||||||
|
|
||||||
|
main ENDP
|
||||||
|
|
||||||
40
tests/prev_base/TESTLONG.EXE.a2
Normal file
40
tests/prev_base/TESTLONG.EXE.a2
Normal file
@ -0,0 +1,40 @@
|
|||||||
|
main PROC NEAR
|
||||||
|
000 0002FA 55 PUSH bp
|
||||||
|
001 0002FB 8BEC MOV bp, sp
|
||||||
|
002 0002FD 83EC08 SUB sp, 8
|
||||||
|
003 000300 8D46FC LEA ax, [bp-4]
|
||||||
|
004 000303 50 PUSH ax
|
||||||
|
005 000304 B89401 MOV ax, 194h
|
||||||
|
006 000307 50 PUSH ax
|
||||||
|
007 000308 E84A14 CALL near ptr scanf
|
||||||
|
008 00030B 59 POP cx
|
||||||
|
009 00030C 59 POP cx
|
||||||
|
010 00030D 8D46F8 LEA ax, [bp-8]
|
||||||
|
011 000310 50 PUSH ax
|
||||||
|
012 000311 B89701 MOV ax, 197h
|
||||||
|
013 000314 50 PUSH ax
|
||||||
|
014 000315 E83D14 CALL near ptr scanf
|
||||||
|
015 000318 59 POP cx
|
||||||
|
016 000319 59 POP cx
|
||||||
|
017 00031A 8D46FC LEA ax, [bp-4]
|
||||||
|
018 00031D 50 PUSH ax
|
||||||
|
019 00031E 8D46F8 LEA ax, [bp-8]
|
||||||
|
020 000321 50 PUSH ax
|
||||||
|
021 000322 B89A01 MOV ax, 19Ah
|
||||||
|
022 000325 50 PUSH ax
|
||||||
|
023 000326 E82C14 CALL near ptr scanf
|
||||||
|
024 000329 83C406 ADD sp, 6
|
||||||
|
025 00032C FF76FE PUSH word ptr [bp-2]
|
||||||
|
026 00032F FF76FC PUSH word ptr [bp-4]
|
||||||
|
027 000332 FF76FA PUSH word ptr [bp-6]
|
||||||
|
028 000335 FF76F8 PUSH word ptr [bp-8]
|
||||||
|
029 000338 B8A001 MOV ax, 1A0h
|
||||||
|
030 00033B 50 PUSH ax
|
||||||
|
031 00033C E88D0B CALL near ptr printf
|
||||||
|
032 00033F 83C40A ADD sp, 0Ah
|
||||||
|
033 000342 8BE5 MOV sp, bp
|
||||||
|
034 000344 5D POP bp
|
||||||
|
035 000345 C3 RET
|
||||||
|
|
||||||
|
main ENDP
|
||||||
|
|
||||||
23
tests/prev_base/TESTLONG.b
Normal file
23
tests/prev_base/TESTLONG.b
Normal file
@ -0,0 +1,23 @@
|
|||||||
|
/*
|
||||||
|
* Input file : ./tests/inputs/TESTLONG.EXE
|
||||||
|
* File type : EXE
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include "dcc.h"
|
||||||
|
|
||||||
|
|
||||||
|
void main ()
|
||||||
|
/* Takes no parameters.
|
||||||
|
* High-level language prologue code.
|
||||||
|
*/
|
||||||
|
{
|
||||||
|
int loc1;
|
||||||
|
int loc2;
|
||||||
|
int loc3;
|
||||||
|
int loc4;
|
||||||
|
scanf ("%d", &loc1);
|
||||||
|
scanf ("%d", &loc2);
|
||||||
|
scanf ("%d %d", &loc2, &loc1);
|
||||||
|
printf ("%ld %ld", loc2, loc4, loc1, loc3);
|
||||||
|
}
|
||||||
|
|
||||||
Loading…
x
Reference in New Issue
Block a user