[ 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.
Copyright (C) 2001-2024 by www.elitesecurity.org. All rights reserved.
|