mirror of
https://github.com/open-develop/xenoborg.git
synced 2025-04-02 13:21:42 -04:00
95 lines
No EOL
2.3 KiB
C
95 lines
No EOL
2.3 KiB
C
/* Common include files */
|
|
#define _CRTDBG_MAP_ALLOC
|
|
#include <stdlib.h>
|
|
#include <crtdbg.h>
|
|
#include "win32.h"
|
|
|
|
/* Globals */
|
|
struct window_t wnd;
|
|
|
|
|
|
int APIENTRY WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nShowCmd )
|
|
{
|
|
/* Check for memory leaks */
|
|
_CrtSetDbgFlag ( _CRTDBG_ALLOC_MEM_DF | _CRTDBG_LEAK_CHECK_DF );
|
|
|
|
if( !create_window( &wnd, 640, 480 ) )
|
|
return -1;
|
|
|
|
return main_loop();
|
|
}
|
|
|
|
#if 0
|
|
int APIENTRY WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nShowCmd )
|
|
{
|
|
uint8_t test_code[] =
|
|
{
|
|
0xB8, // mov eax, 0xDEADBEEF
|
|
0xEF,
|
|
0xBE,
|
|
0xAD,
|
|
0xDE,
|
|
0x90, // nop
|
|
0xCC
|
|
};
|
|
|
|
/* Signify the beginning of the test */
|
|
MessageBoxA( NULL, "Xenoborg libemu test 8/21/11", "Test", MB_OK );
|
|
|
|
/* Create a new instance of the x86 emulator */
|
|
e = emu_new();
|
|
if(!e)
|
|
{
|
|
char string[128];
|
|
sprintf( string, "emu_new(): %s", emu_strerror(e) );
|
|
msg_box( string, MB_OK );
|
|
emu_free(e);
|
|
return -1;
|
|
}
|
|
|
|
/* Set up the default register values */
|
|
emu_cpu_reg32_set( emu_cpu_get(e), eax, 0 );
|
|
emu_cpu_reg32_set( emu_cpu_get(e), ecx, 0 );
|
|
emu_cpu_reg32_set( emu_cpu_get(e), edx, 0x00000600 );
|
|
emu_cpu_reg32_set( emu_cpu_get(e), ebx, 0 );
|
|
emu_cpu_reg32_set( emu_cpu_get(e), esp, 0 );
|
|
emu_cpu_reg32_set( emu_cpu_get(e), ebp, 0 );
|
|
emu_cpu_reg32_set( emu_cpu_get(e), esi, 0 );
|
|
emu_cpu_reg32_set( emu_cpu_get(e), edi, 0 );
|
|
|
|
emu_cpu_eflags_set( emu_cpu_get(e), 0x00000002 );
|
|
|
|
emu_cpu_eip_set( emu_cpu_get(e), 0x11000 );
|
|
|
|
/* Give the emulator some code to chew on */
|
|
emu_memory_write_block( emu_memory_get(e), emu_cpu_eip_get( emu_cpu_get(e) ), test_code, sizeof( uint8_t ) * 7 );
|
|
|
|
/* Try executing the first instruction */
|
|
if( emu_cpu_parse( emu_cpu_get(e) ) )
|
|
{
|
|
char string[128];
|
|
sprintf( string, "emu_cpu_parse(): %s", emu_strerror(e) );
|
|
msg_box( string, MB_OK );
|
|
}
|
|
else
|
|
{
|
|
uint32_t Eax;
|
|
char string[128];
|
|
|
|
emu_cpu_step( emu_cpu_get(e) );
|
|
Eax = emu_cpu_reg32_get( emu_cpu_get(e), eax );
|
|
sprintf( string, "emu_cpu_parse(): Eax = 0x%.08X", Eax );
|
|
msg_box( string, MB_OK );
|
|
}
|
|
|
|
// emu_cpu_run(emu_cpu_get(e));
|
|
|
|
/* Free up the x86 emulator instance */
|
|
emu_free(e);
|
|
|
|
/* Signify the end of the test */
|
|
msg_box( "Test complete.", MB_OK );
|
|
|
|
return 0;
|
|
}
|
|
#endif
|