Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

Asemblerski kod u C/C++/win32

[es] :: Asembler :: Asemblerski kod u C/C++/win32

[ Pregleda: 3820 | Odgovora: 7 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

rapidlord
Vladan Markovic
dev
KG

Član broj: 10145
Poruke: 428
*.kg.sbb.co.yu.



+1 Profil

icon Asemblerski kod u C/C++/win3206.04.2005. u 14:12 - pre 172 meseci
Imam kod jedne aplikacije pisan u standardnom C/C++ za Palm OS, kod treba da prebacim na PC (Windows) sa MFC-om, E sad u tom kodu postoje par funkcija koje su u asembleru , radio sam nesto malo u asembleru ali ne dovoljno da bi ukapirao o cemu se ovde radi, kod je sledeci:

Code:

static asm UInt8* GetGamn()
{
    lea     racer_gamn, a0
    rts
racer_gamn:
    dc.b 0x03,0xff,0x00,0x00,0xff,0x00,0x00,0xf1
    dc.b 0x0e,0x00,0xcd,0x32,0x00,0xa3,0x5c,0x00
    dc.b 0x6a,0x94,0x01,0x04,0x2b,0xd4,0x00,0x00
    dc.b 0x2b,0xd4,0x00,0x00,0x23,0xdc,0x00,0x00
    dc.b 0x23,0xdc,0x00,0x00,0x1c,0xe2,0x01,0x00
    dc.b 0x1c,0xd4,0x0f,0x00,0x1c,0xd7,0x0c,0x00
    dc.b 0x1c,0xc2,0x21,0x00,0x15,0xb5,0x35,0x00
    dc.b 0x0e,0xa3,0x4d,0x01,0x07,0x74,0x80,0x04
    dc.b 0x05,0x2b,0xd4,0x00,0x00,0x00,0x23,0xdc
    ... jos pedesetak slicnih linija ...
    ..
}


a ova funkcija se koristi u sledecoj funkciji:

Code:

set_gamn(GetGamn());
//gde je :
void set_gamn(byte* gamn)
{
...
}


Dali moze neko da mi kaze kako bi ova prva funkcija trebala da izgleda ako bi je radili za Windows, bilo kakva pomoc bi mi dobro dosla.

p.s. Kako neko moze uopste da zna o cemu se radi u ovoj sumi brojeva, dali postoji neki konverter ili nesto slicno???

Hvala.
 
Odgovor na temu

Vojislav Milunovic

Član broj: 25
Poruke: 2117
*.beotel.net.



Profil

icon Re: Asemblerski kod u C/C++/win3207.04.2005. u 00:32 - pre 172 meseci
Meni ovo deluje kao vraćanje podataka iz funkcije s obzirom na logiku koda, mada može biti da je to binarni kod...
No da se držim prve pretpostavke...
Ovo sve možeš ovako prekucati (bcc32 trip):
Code:

char *GetGamn(){
__asm{
    mov eax, offset racer_gamn
    ret
racer_gamn:
    db 0x03,0xff,0x00,0x00,0xff,0x00,0x00,0xf1
    db 0x0e,0x00,0xcd,0x32,0x00,0xa3,0x5c,0x00
    db 0x6a,0x94,0x01,0x04,0x2b,0xd4,0x00,0x00
    db 0x2b,0xd4,0x00,0x00,0x23,0xdc,0x00,0x00
    db 0x23,0xdc,0x00,0x00,0x1c,0xe2,0x01,0x00
    db 0x1c,0xd4,0x0f,0x00,0x1c,0xd7,0x0c,0x00
    db 0x1c,0xc2,0x21,0x00,0x15,0xb5,0x35,0x00
    db 0x0e,0xa3,0x4d,0x01,0x07,0x74,0x80,0x04
    db 0x05,0x2b,0xd4,0x00,0x00,0x00,0x23,0xdc
    .
    ..
 }
}


Citat:

p.s. Kako neko moze uopste da zna o cemu se radi u ovoj sumi brojeva, dali postoji neki konverter ili nesto slicno???


Ne možeš znati :) Prati logiku programa da vidiš da li su podaci ili binarni kod, ako su podaci ostaviš tako kako jeste, ako je binarni kod poteraš ga kroz neki disassembler ili debugger i vidiš kako radi :)
 
Odgovor na temu

Sundance

Član broj: 7510
Poruke: 2559
*.sava.sczg.hr.

ICQ: 106979934


Profil

icon Re: Asemblerski kod u C/C++/win3209.04.2005. u 21:20 - pre 172 meseci
Vojislave, mislim da je ovaj binarni kod specifičan za PalmOS arhitekturu (šta on uopće koristi, neki RISC? :). Daj cijeli kod (ostale linije) i saznaj za koji OS, pa ćemo ti dati disasm iz IDA-e, pa možda ako netko zna prepiše ga za x86.
 
Odgovor na temu

Vojislav Milunovic

Član broj: 25
Poruke: 2117
194.106.165.*



Profil

icon Re: Asemblerski kod u C/C++/win3209.04.2005. u 21:51 - pre 172 meseci
Nemam pojma meni baš liči na neke podatke, ali šta ga znam možda i jeste binarno :) z0mbie u PalmOS-u :)))
 
Odgovor na temu

rapidlord
Vladan Markovic
dev
KG

Član broj: 10145
Poruke: 428
*.kg.sbb.co.yu.



+1 Profil

icon Re: Asemblerski kod u C/C++/win3213.04.2005. u 10:56 - pre 172 meseci
Evo sta mi je jedan lik odgovorio na pocketpcdn forumu, i mislim da je upravu, kompajlira mi se OK, jos cu da vidim dali i app. radi ok, mozda samo bude pravilo problem little/big endian jer se razlikuje na Palm/PPC.

Citat:

All that code is doing is returning the address of the byte buffer. No need to do that in asm on pocket pc.

Put the data table in a binary file and stick it in your resouses, then use LoadResource() to get a pointer to it.

or

create a fixed array in memory and use the array pointer:
BYTE racer_gamn[] = { 0x03, 0xff, ... };

Cheers,

Pete


Slican odgovor sam imao jos na jednom forumu.
 
Odgovor na temu

Nothingman

Član broj: 31375
Poruke: 308
*.teol.net.



+112 Profil

icon Re: Asemblerski kod u C/C++/win3213.04.2005. u 11:07 - pre 172 meseci
Pa to ti je rekao i Vojislav ;)

Q: Are there really any systems where
void main() doesn't work?
A: It has been reported that programs using void main() can crash.
Q: The book I've been using, _C Programing for the Compleat Idiot_,
always uses void main().
A: Perhaps its author counts himself among the target audience.
 
Odgovor na temu

Vojislav Milunovic

Član broj: 25
Poruke: 2117
194.106.165.*



Profil

icon Re: Asemblerski kod u C/C++/win3213.04.2005. u 11:43 - pre 172 meseci
hehe :)) Da :))) kao što sam i pretpostavio, podaci su u pitanju :)
 
Odgovor na temu

Sundance

Član broj: 7510
Poruke: 2559
*.sava.sczg.hr.

ICQ: 106979934


Profil

icon Re: Asemblerski kod u C/C++/win3218.04.2005. u 14:51 - pre 172 meseci
Ma džaba ti što se kompajlira, ako taj PocketPC nema x86 u sebi, to je kod za neki drugi procesor i neće dobro radit!

Ako ima onda OK.
 
Odgovor na temu

[es] :: Asembler :: Asemblerski kod u C/C++/win32

[ Pregleda: 3820 | Odgovora: 7 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.