Masm32 SDK description, downloads and other helpful links
Message to All Guests

Main Menu

C -> ASM

Started by six_L, March 06, 2023, 02:49:47 AM

Previous topic - Next topic


Hello everyone!

How do the C codes translate into asm codes?

void EditPrintf (HWND hwndEdit, TCHAR * szFormat, ...)
     TCHAR   szBuffer [1024] ;
     va_list pArgList ;

     va_start (pArgList, szFormat) ;
     wvsprintf (szBuffer, szFormat, pArgList) ;
     va_end (pArgList) ;

     SendMessage (hwndEdit, EM_SETSEL, (WPARAM) -1, (LPARAM) -1) ;
     SendMessage (hwndEdit, EM_REPLACESEL, FALSE, (LPARAM) szBuffer) ;
     SendMessage (hwndEdit, EM_SCROLLCARET, 0, 0) ;

    EditPrintf (hwndEdit,
                 TEXT ("System date and time successfully changed ")
                 TEXT ("from\r\n\t%s, %s.%03i to\r\n\t%s, %s.%03i."),
                 szDateOld, szTimeOld, pstOld->wMilliseconds,
                 szDateNew, szTimeNew, pstNew->wMilliseconds) ;
Say you, Say me, Say the codes together for ever.


Similar to this - just to give you a start. Go ahead and play yourself, it's not that difficult. Instead of TEXT ("..., use cfm$("...

EditPrintf proc hwndEdit, pFormat
Local szBuffer[BYTE]:1024
Local pArgList:DWORD, vaStart:DWORD

     ??? va_start (pArgList, szFormat) ;
     invoke wvsprintf, addr szBuffer, pFormat, addr pArgList
     ??? va_end (pArgList) ;

     invoke SendMessage, hwndEdit, EM_SETSEL, -1, -1
     invoke SendMessage, hwndEdit, EM_REPLACESEL, FALSE, addr szBuffer
     invoke SendMessage, hwndEdit, EM_SCROLLCARET, 0, 0
EditPrintf endp


You can use
Sorry for the bad English


You used to be able to generate an ASM listing with the 32 bit versions of Visual C, they were a bit rough to understand but if you set the options to turn all optimisation off, you could then manually optimise it and often get it faster. If its a 32 bit version of VC, have a look at the command line options.


if youve got a working exe chuck it in IDA [32 bit freeware] or Radare cutter [64 bit freeware] .. youll notice that the compilers such as Visual C put an awful lot of junk in largely revolving around the ability to recover your program in the event of failure .. further if youre running a 64 bit program theres a lot of "bodging" done by MS to try and ensure some sort of compatibility  with what are basically 32 bit functions ... Cutter really highlights what a mess it is sometimes .. std function calls are ok but anything non standard is fraught to say the least



Thank you very much!
Special emphasis on the our member(morgot) from Ukraine. you are fine, we'r gratified.
Say you, Say me, Say the codes together for ever.