[ dragancesu @ 31.01.2014. 07:11 ] @
Ako je pogresan forum moderatori neka prebace gde treba, pisem ovde zato sto imam C program koji poziva ASM rutine

Koristim clipper godinama, snalazim se sa C pa napravim i neku funkciju koja mi treba i to povezem

Sada je aktuelna verzija Harbour project, koji clipper programe pretvara u c pa kompajlira, koristi se minGW kompajler

Jezik dozvoljava da se ubace delovi pisani u C-u i to mi uspeva, ali sada sam nasao jedan interesantan free projekt koji je izvorno uradjen za clipper, ali ne radi na harbour

Problem je sto ima jednu rutinu u ASM i koliko sam gledao nisam nasao ASM compiler za windows

Imam source koji mogu da postujem ako treba, uglavnom ASM rutine su

;; Syntax: string-10 := l_dtot( <number> )
;;
;; Purpose: Converts an IEEE 8 byte into an IEEE 10 byte real.
;;

;; Syntax: number := l_ttod( <string-10> )
;;
;; Purpose: Converts an IEEE 10 byte into an IEEE 8 byte real.
;;

ili neko zna kako ovo napisati u C-u

Pozdrav


Projekat je rad sa XLS fajlovima


[ Branimir Maksimovic @ 31.01.2014. 16:46 ] @
Kad je ovo pisano? Ovo ti je 16 bitni asembler, tako da, hm ovo je pisano jako davno.
Koliko kapiram ovo pretvara 10 byte ieee float u 8 byte ieee float i obratno?
Za to ti danas ne treba nikakav program posto imas koprocesor...
Jel imas primer poziva ove dve f-je, tj za sta se tacno koristi?
Buni me ono string-10



[ Burgos @ 31.01.2014. 17:06 ] @
string-10 je izgleda niz od deset bajtova.
[ Branimir Maksimovic @ 31.01.2014. 17:26 ] @
To je ocigledno. Nego pitanje je kako se to koristi u programu?
10 bajtni float (koprocesor) postoji ohoho odavno ...
To ti je tip long double u C/C++-u.
[ dragancesu @ 31.01.2014. 20:54 ] @
Napisao sam da imam kompletan source pa kacim u prilogu
[ Branimir Maksimovic @ 31.01.2014. 23:50 ] @
Problem su f-je koje se pozivaju a to su: __parnd, __retclen te __parc i call __retnd. To su ti 16 bit kliper specificne
f-je koje harbour ne podrzava. Asembler koji ti treba za ovo je tasm cini mi se ali ti ovo nece raditi
osim na win95/dos i slicno...
Dakle prvo treba da vidis jel ti ove f-je uopste trebaju na harbouru, a tek onda kako se interfejs radi sa
istim sto pozivi harbour -> c a onda i harbour -> asm.
[ dragancesu @ 01.02.2014. 07:41 ] @
Te funkcije ne bi trebalo da su problem, one sluze za prenos parametara, uglavnom to se radi na pascal nacin preko steka i to je ostalo radi kompatibilnosti

U attacmentu su primeri za cliper i harbour

clipper je kompajler za 16bit dos program
harbour je kompajler za win 32bit program
[ Branimir Maksimovic @ 01.02.2014. 11:12 ] @
I u cemu je onda problem? Ako imas gcc (mingw) konvertovanje double u long double i obratno
je trivijalno.
Imas primer u C-u za double. Ista fora samo sto upotrebis long double umesto double.
Dakle ulaz double izlaz log double string je dodeljivanje jedne promenljive
drugoj i onda samo vratis sa retc.
U obratnom slucaju uzimas string koji predstavlja long double i to sa unijom
ili kastovanjem konvertujes u long double i onda dodelis double varijabli
koju vratis sa retnd.
Vise sam ispisao teksta nego sto ti treba koda ;)

[ dragancesu @ 03.02.2014. 08:06 ] @
Hvala u svakom slucaju, problem je sto C ne koristim svaki dan pa verovatno neke trivijalne stvari ne mogu odmah da resim, gledam tutorijale i manule,

IEEE 8 byte real je double ili long double
ali sta je IEEE 10 byte real?

Koji tip varijable ima 10 bajtova i sluzi za racunanje?


[ Branimir Maksimovic @ 15.02.2014. 04:55 ] @
Sorry na zakasnjenju. Tip koji ima 10 byte real u c/c++ -je long double.
Ali pazi samo ako koristis gcc. Ako koristis mikrosoftov kompajler
on ne podrzava taj tip nego mu je long double isto sto i double.