Kompilacja / linkowanie C z *.asm

0

napisałem programik w C. napisałem także procedurkę w assemblerze. mam zarówno jej kod w pliku *.asm jak i już skompilowaną do exe. Jak te rzeczy połączyć ? Kod w C wykorzystuje tą procedurkę w asm. Wiem że trzeba wykorzystać polecenia MAKE i / lub BUILD ale jak ? korzystam z borland 5.02. Proszę o wyjaśnienie krok po kroku bo niestety w literaturce nic szczegółowego nie znalazłem .. sam ogólniki .. :-[

0

Ja też szczegółowo ci nie powiem, bo takich numerów nie robiłem, ale w asm obj łączyłem.
Skoro już skompilowałeś w C program, to zapewne masz już plik obj oprócz exe. Jeżeli nie to ustaw opcje kompilatora na generowanie kodu obj (nie powiem Ci gdzie to jest w borland 5).
Potem w asm generujesz także plik obj.
I łączysz linkerem obydwa.
Zakładając, że masz np. plik wygenerowany przez C: c.obj i przez asm (załóżmy dla ułatwienia, że tasma używasz tasm asm.asm): asm.obj to łączysz je przez tlink:
tlink c.obj asm.obj, plik.exe

0

Troche lamerskie pytanie , ale czy można linkować pliki obj dwóch różnych języków ( w tym przypadku c i asm ) ??

0

ja akurat wyczytalem za pomoca opcji MAKE lub BUILD (po założeniu projektu) wprowadza sie kod C i potem podczepia do tego skompilowany kod (*.exe) tego co napisaliśmyuu wcześniej w asm. kurcze ... próbowałem wiele razy to zrobić ale cały czas wyskakują błędy że nie ma pliku *.def lub *.rc. co to za pliki ?

0

Troche lamerskie pytanie , ale czy można linkować pliki obj dwóch różnych języków ( w tym przypadku c i asm ) ??

Jeżeli generują taki sam plik obj to dlaczego by nie? A akurat BorlandC i TASM generują taki sam.
Robiłem właśnie testy i bez problemu to zadziałało. Oczywiście musiałem podać prototypy funkcji ale wszystko działało. Jest tylko haczyk z nazwami funkcji. @ musi być przed

0

Taka praktyke jak najbardziej sie stosuje ;) - chociaz raczej do kodu
C dodaje sie wstawki asmowe ;)

Moge Ci napisac jak to zrobic ale powiem to samo co jest napisane
w ksiazce "W glab jezyka C" (znajdziesz na necie wersje elektroniczna ;) )!!!! Tam jest dokladnie pokazane jak to
polaczyc i co trzeba wziasc pod uwage !!! A nazwy funkcji raczej powinny
zaczynac sie z _ ;) taki jest standard C a nie @ :).
Na pewno nie da sie jak to pisales polaczyc dwoch execow :) co najwyzej
obj-oty !!!! I to za pomoca asmowego tlinka a plik z c poddajesz tylko
Compile (wtedy masz obj ale sam bedziesz musial podac linkerowi liby
z ktorych wykorzystujesz funkcje).

0

A nazwy funkcji raczej powinny
zaczynac sie z _ ;) taki jest standard C a nie @ :).

Mi się udało z @ zrobić. Funkcja w C wyglądała tak:
int Test(int x);
A w asm to było tak:
@Test
:)

Ale fakt. _ chyba częściej jest spotykane.

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