printf i scanf

0

Pilnie poszukuje kodu źrodłowego 2 funkcji:
vsnprintf i vsnscanf
Jak ktos sie znimi spotkal w jakims programie lub kodzie to prosze o kontakt :)

1

sciagnij sobie src libc, tam jest
np
http://rpms.arvin.dk/glibc/source/sources/glibc-2.2.5.tar.bz2

0

ja bym proponowal napisac samemu w asmie.

0

w asmie jak !!??
heh a poza tym i tak nie moge w asmiebo kod ma byc przenosny

0

nie bede tu kodu zrodlowego pisal, odsylam do internetu, ale w assemblerze przeciez da sie wysylac na ekran znaki, nawet w kolorach. a zeby kod byl przenosny to robisz wstawke asemblerowa w kodzie c/c++ i zamykasz wszystko w klasie.

0

w asmie jak !!??
heh a poza tym i tak nie moge w asmiebo kod ma byc przenosny

Jezeli pozostaje na x86, to proponuje:
http://webster.cs.ucr.edu/Page_asm/stdlib/stdlibv1.html
W asm i bardzo dobrze udokumentowane źrodla (na stronce dodatkowo sposob zastosowania i linki do odpowiednich dzialow w ksiazce)

0

vixen tak sie sklada ze obecnie wstawki asm-owe w c/c++ nie sa juz przenosne [diabel]
Sa dwie skladnie AT&T (np DJGPP i inne gcc :] ) oraz Intel (BCB, VC++)
sa calkowicie niekompatybilne i wstawka na 100% nie zadziala na obu grupach - no chyba ze kompilacja warunkowa pisanie dwoch roznych wstawek itp itd ale to jest kupa roboty.
I dlatego cepa ma racje poszukujac innego wyjscia, najlepiej kodu w calosci w C - to juz jest w miare przenosne ;)

0

o tej nieprzenosnosci nie wiedzialem, sorki.

A biblioteka *.lib? Tez jest nieprzenosna?

1

Zalezy co rozumiesz przez przenosnosc..
To co skompilujesz pod winda do .lib na 99.99999999% nie ruszy z niczym na linuxie...
Nie wspominajac juz o tym ze .lib to wymysl M$, jako ze wszelkie gcc kompiluja do .a...

0

a jeszcze wracajac do asma to z tego co wiem skladnia asm sie nie zmienila. a w standardzie c++ wstawke assemblerowa robie sie dzieki slowu kluczowemu asm. Jezeli zas uzywasz kompilatorow niezgodnych ze standardem, to proponuje je zmienic. tak mi sie przynajmniej wydaje...

0

a jeszcze wracajac do asma to z tego co wiem skladnia asm sie nie zmienila

Jest skladnia Intelowska np. tak:
mov ax, bx
to samo w AT&T:
movw %bx, %ax
Jedno i drugie kopije zawartosc bx do ax. Takich roznic jest wiecej. Wiec skladnie asm sa rozne. To ze sie tak samo umieszcza w asm to nie ma wiekszego znaczenia.
Co wiecej, jezeli wykorzystujesz z poziomu asm przerwania DOS/Linux to oczywistym jest, ze to na drugim nie pojdzie.
Link ktory wczesniej podalem wskazuje na zrodla w asm standardowych bibliotek C. Gdzies na tej stronie sa wersje tych samych bibliotek do uzycia w Linuxie. Jezeli uzywa sie HLA albo FASM to juz w ogole nie ma problemu ze skorzystaniem z tego, bo odwoluje sie identycznie. Poniewaz jednak wymagacie uzycia tego w C, to wystarczy napisac dwie krociutkie wstawki (wywolujace praktycznie juz gotowe funkcje).

0

zmiany dotycza wstawek czy calego asma?

0

zmiany dotycza wstawek czy calego asma?

#ifdef linux
asm{
lcall printf
}
#endif
#ifdef dos
asm{
call printf
}
#endif

Jeszcze jakos parametry tam sie podaje, ale to trzebaby zerknac w kod (a i biblioteke podlaczyc).

0

wow a ja sie balem ze nikt na temat nie odpowie :D

0

ale chodzi mi o to, czy czysty kod asemblerowy jest taki sam, czy tez rozny, bo jak taki sam to mozna przenosic assemblerowy kod, i przekompilowywac do plikow *.lib lub ich odpowiednikow

0

ale chodzi mi o to, czy czysty kod asemblerowy jest taki sam, czy tez rozny, bo jak taki sam to mozna przenosic assemblerowy kod, i przekompilowywac do plikow *.lib lub ich odpowiednikow

To zalezy do czego. Do printf i scanf prawdopodobnie sa rozne kody. Chodzi o to, ze kody zarowno pod linuxa jak i dosa sa juz napisane w jednym module i wystarczy go wykorzystac. Praktycznie nic wiecej nie potrzebujesz. Calych programow nie przeniesiesz, ale wystarczy dolaczyc do moduly przekompilowac na innym systemie i bedzie grac.
To sa juz zrodla, wiec wystarczy je zaincludowac do programu i juz.

1 użytkowników online, w tym zalogowanych: 0, gości: 1