Soyez le premier à donner votre avis sur cette source.
Vue 5 742 fois - Téléchargée 235 fois
#include <windows.h> #include "FncAsm.h" #define BNU_INIT (WM_USER+1) unsigned __int64 clib, bnlib; HWND hwndapp = 0; char szbuff[160]; char *szappname = "OptimiC"; char *szinfo = "Appuyer sur ENTER.\nNe plus toucher le PC.\n" "Patienter quelques secondes.\nLes comptes s'afficheront."; void TestC() { DWORD i, hi, lo; __asm { rdtsc mov hi, edx mov lo, eax } for(i = 10000000; i >= 100000; i--) ultoa(i, szbuff, 10); __asm { rdtsc sub eax, lo sbb edx, hi mov dword ptr clib, eax mov dword ptr clib+4, edx } } void TestBnc() { DWORD i, hi, lo; __asm { rdtsc mov hi, edx mov lo, eax } for(i = 10000000; i >= 100000; i--) bnultoa(i, szbuff); __asm { rdtsc sub eax, lo sbb edx, hi mov dword ptr bnlib, eax mov dword ptr bnlib+4, edx } } void dispResult() { char *c; c = szbuff+4; strcpy(szbuff, "C\t=\t"); _ui64toa(clib, c, 10); while(*c) c++; strcpy(c, "\nASM\t=\t"); c += 7; _ui64toa(bnlib, c, 10); while(*c) c++; clib -= bnlib; strcpy(c, "\n\ngain\t=\t"); _ui64toa(clib, c+9, 10); MessageBox(hwndapp, szbuff, szappname, MB_ICONINFORMATION); } LRESULT CALLBACK AppWndProc(HWND hwnd, UINT mssg, WPARAM wParam, LPARAM lParam) { switch(mssg) { case BNU_INIT: MessageBox(hwnd, szinfo, szappname, MB_ICONINFORMATION); SetCursor(0); TestC(); TestBnc(); dispResult(); PostQuitMessage(0); return 0; case WM_SIZE: PostMessage(hwnd, BNU_INIT, 0, 0); return 0; case WM_SETCURSOR: return 0; } return DefWindowProc(hwnd, mssg, wParam, lParam); } void __stdcall InitInstance(HINSTANCE hinst) { WNDCLASS wndcls; memset(&wndcls, 0, sizeof(WNDCLASS)); wndcls.style = CS_HREDRAW | CS_VREDRAW; wndcls.lpfnWndProc = AppWndProc; wndcls.hInstance = hinst; wndcls.hbrBackground = (HBRUSH) GetStockObject(BLACK_BRUSH); wndcls.lpszClassName = szappname; if(!RegisterClass(&wndcls)) return; hwndapp = CreateWindowEx(WS_EX_TOPMOST, szappname, "", WS_POPUP | WS_VISIBLE, 0, 0, GetSystemMetrics(SM_CXSCREEN), GetSystemMetrics(SM_CYSCREEN), 0, 0, hinst, 0); } int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE, PSTR, int) { MSG msg; SetPriorityClass(GetCurrentProcess(), REALTIME_PRIORITY_CLASS); SetThreadPriority(GetCurrentThread(), THREAD_PRIORITY_TIME_CRITICAL); InitInstance(hInstance); if(hwndapp == NULL) goto appEnd; ShowWindow(hwndapp, SW_SHOW); UpdateWindow(hwndapp); while(GetMessage(&msg, 0, 0, 0)) { TranslateMessage(&msg); DispatchMessage(&msg); } appEnd: return 0; }
Car quand il y a des nombres qui ont 12-13 digits cela s'avère beaucoup plus efficace de retourner un pointer sur l'offset du 0 final.
"Pour sortir en hexa
c'est encore plus simple, en cadeau une prochaine fois." -> toujours pas là le cadeau ;(
Tu verras que result idem avec ou sans goto.
Avec goto est + simple à relire que si on a plein de if imbriqués.
Merci pour le "Le code en lui-même est plutôt bien".
ciao...
ShowWindow(hwndapp, SW_SHOW); UpdateWindow(hwndapp);
while(GetMessage(&msg, 0, 0, 0)) {
TranslateMessage(&msg); DispatchMessage(&msg);
}
appEnd:
return 0;
c laid ... vraiment laid ...
if(hwndapp != NULL) {
ShowWindow(hwndapp, SW_SHOW);
UpdateWindow(hwndapp);
while(GetMessage(&msg, 0, 0, 0)) {
TranslateMessage(&msg);
DispatchMessage(&msg);
}
}
return 0;
AH!!!! La c zolie!!! =P
Juste pour avoir mis un 'goto' à un endroit ou tu en avais aucunement besoin moi je fait -3 ce qui donne 7/10 ... Le code en lui-même est plutôt bien!
Vous n'êtes pas encore membre ?
inscrivez-vous, c'est gratuit et ça prend moins d'une minute !
Les membres obtiennent plus de réponses que les utilisateurs anonymes.
Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.
Le fait d'être membre vous permet d'avoir des options supplémentaires.