Thread View: pl.comp.lang.c
15 messages
15 total messages
Started by Borneq
Sat, 15 Oct 2016 10:21
Linker C nie widzi procedury assemblerowej
Author: Borneq
Date: Sat, 15 Oct 2016 10:21
Date: Sat, 15 Oct 2016 10:21
13 lines
1393 bytes
1393 bytes
Mam projekt, w nim dwa pliki assemlerowe kompilowane przez Yasm,a właściwie przez vsyasm.exe -Xvc -f x64 -o "x64\Debug\\" -rnasm -pnasm addmul_1.asm Pliki się kompilują ale linker C nie widzi tych funkcji : unresolved external symbol mpn_mul_1 referenced in function mpn_mul_basecase unresolved external symbol mpn_addmul_1 referenced in function mpn_mul_basecase nie poamga zmiana nazwy plików assemblerowych na nazwę funkcji. Plik main to cpp ale moożna zmienić na c. Projekt jest w https://drive.google.com/open?id=0B7E799YMGCWTcms0QTlyZkNvaUE
Linker C nie widzi procedury assemblerowej
Author: M.M.
Date: Sat, 15 Oct 2016 18:45
Date: Sat, 15 Oct 2016 18:45
1 lines
1276 bytes
1276 bytes
Upewnij sie ze to C a nie C++
Linker C nie widzi procedury assemblerowej
Author: M.M.
Date: Sat, 15 Oct 2016 18:45
Date: Sat, 15 Oct 2016 18:45
1 lines
1352 bytes
1352 bytes
Upewnij sie ze to C a nie C++
Linker C nie widzi procedury assemblerowej
Author: M.M.
Date: Sat, 15 Oct 2016 18:45
Date: Sat, 15 Oct 2016 18:45
1 lines
1269 bytes
1269 bytes
Upewnij sie ze to C a nie C++
Re: Linker C nie widzi procedury assemblerowej
Author: slawek
Date: Sun, 16 Oct 2016 06:27
Date: Sun, 16 Oct 2016 06:27
1 lines
973 bytes
973 bytes
Ale pamiętasz że jak ma być fun() w C to musi być _fun w Asemblerze?
Re: Linker C nie widzi procedury assemblerowej
Author: Borneq
Date: Sun, 16 Oct 2016 10:49
Date: Sun, 16 Oct 2016 10:49
6 lines
1297 bytes
1297 bytes
W dniu 16.10.2016 o 08:27, slawek pisze: > Ale pamiętasz że jak ma być fun() w C to musi być _fun w Asemblerze? Nic to nie dało, linker żąda akurat bez podkreślenia. Nie wiem, czy nazwa funkcji musi być w assemblerze w linii "LEAF_PROC mpn_addmul_1" czy też trzeba aby cały plik assemblerowy nazywał się tak jak żądana funkcja.
Re: Linker C nie widzi procedury assemblerowej
Author: Marek Borowski
Date: Sun, 16 Oct 2016 12:48
Date: Sun, 16 Oct 2016 12:48
34 lines
1729 bytes
1729 bytes
On 16.10.2016 12:49, Borneq wrote:
> W dniu 16.10.2016 o 08:27, slawek pisze:
>> Ale pamiętasz że jak ma być fun() w C to musi być _fun w Asemblerze?
> Nic to nie dało, linker żąda akurat bez podkreślenia. Nie wiem, czy
> nazwa funkcji musi być w assemblerze w linii "LEAF_PROC mpn_addmul_1"
> czy też trzeba aby cały plik assemblerowy nazywał się tak jak żądana
> funkcja.
>
A może warto sprawdzic co to LEAF_PROC ?
%macro LEAF_PROC 1
global __g%1
%ifdef DLL
export __g%1
%endif
__g%1:
Jak widac dodaje prefix __g wiec nie dziwne ze linker nie znajduje
symbolu. Albo uzywaj __gmpn_addmul_1 w c albo zrezygnuj z LEAF_PROC.
global mpn_addmul_1
mpn_addmul_1:
Pozdrawiam
Marek
Re: Linker C nie widzi procedury assemblerowej
Author: Borneq
Date: Sun, 16 Oct 2016 13:42
Date: Sun, 16 Oct 2016 13:42
5 lines
1285 bytes
1285 bytes
W dniu 16.10.2016 o 14:48, Marek Borowski pisze: > Jak widac dodaje prefix __g wiec nie dziwne ze linker nie znajduje > symbolu. Albo uzywaj __gmpn_addmul_1 w c albo zrezygnuj z LEAF_PROC. Dzięki, ta LEAF_PROC jest niepotrzebna, wyrzuciłem, jeszcze coś jest.
Re: Linker C nie widzi procedury assemblerowej
Author: Borneq
Date: Sun, 16 Oct 2016 14:03
Date: Sun, 16 Oct 2016 14:03
8 lines
1478 bytes
1478 bytes
W dniu 16.10.2016 o 15:42, Borneq pisze: > W dniu 16.10.2016 o 14:48, Marek Borowski pisze: >> Jak widac dodaje prefix __g wiec nie dziwne ze linker nie znajduje >> symbolu. Albo uzywaj __gmpn_addmul_1 w c albo zrezygnuj z LEAF_PROC. > > Dzięki, ta LEAF_PROC jest niepotrzebna, wyrzuciłem, jeszcze coś jest. > Jeszcze __g w innym miejscu było, już w porządku
Re: Linker C nie widzi procedury assemblerowej
Author: Borneq
Date: Sun, 16 Oct 2016 14:06
Date: Sun, 16 Oct 2016 14:06
13 lines
1716 bytes
1716 bytes
W dniu 16.10.2016 o 16:03, Borneq pisze: > W dniu 16.10.2016 o 15:42, Borneq pisze: >> W dniu 16.10.2016 o 14:48, Marek Borowski pisze: >>> Jak widac dodaje prefix __g wiec nie dziwne ze linker nie znajduje >>> symbolu. Albo uzywaj __gmpn_addmul_1 w c albo zrezygnuj z LEAF_PROC. >> >> Dzięki, ta LEAF_PROC jest niepotrzebna, wyrzuciłem, jeszcze coś jest. >> > Jeszcze __g w innym miejscu było, już w porządku A jak to będzie w C++? W C++ jest coś takiego jak namespace, ale czy to będzie widoczne w assemblerze? czy też trzeba będzie tam dodawać jakiś prefiks do nazwy aby była unikalna w całym projekcie?
Re: Linker C nie widzi procedury assemblerowej
Author: Marek Borowski
Date: Sun, 16 Oct 2016 20:25
Date: Sun, 16 Oct 2016 20:25
22 lines
2051 bytes
2051 bytes
On 16.10.2016 16:06, Borneq wrote: > W dniu 16.10.2016 o 16:03, Borneq pisze: >> W dniu 16.10.2016 o 15:42, Borneq pisze: >>> W dniu 16.10.2016 o 14:48, Marek Borowski pisze: >>>> Jak widac dodaje prefix __g wiec nie dziwne ze linker nie znajduje >>>> symbolu. Albo uzywaj __gmpn_addmul_1 w c albo zrezygnuj z LEAF_PROC. >>> >>> Dzięki, ta LEAF_PROC jest niepotrzebna, wyrzuciłem, jeszcze coś jest. >>> >> Jeszcze __g w innym miejscu było, już w porządku > A jak to będzie w C++? > W C++ jest coś takiego jak namespace, ale czy to będzie widoczne w > assemblerze? czy też trzeba będzie tam dodawać jakiś prefiks do nazwy > aby była unikalna w całym projekcie? Jak najbardziej. Zobacz name decoration. Pytanie czy bezpośrednie lączenie C++ z asm jest konieczne. Mozna wszak zadeklarowac funkcje asemblerowe jako extern "C". Pozdrawiam Marek
Re: Linker C nie widzi procedury assemblerowej
Author: Borneq
Date: Mon, 17 Oct 2016 01:10
Date: Mon, 17 Oct 2016 01:10
6 lines
1456 bytes
1456 bytes
W dniu 16.10.2016 o 22:25, Marek Borowski pisze: > Pytanie czy bezpośrednie lączenie C++ z asm jest konieczne. Mozna wszak > zadeklarowac funkcje asemblerowe jako extern "C". To znaczy w assemlerze zostaje jak jest będzie dosłowna nazwa, a w headerze dla C funkcja będzie extern "C"?
Re: Linker C nie widzi procedury assemblerowej
Author: M.M.
Date: Mon, 17 Oct 2016 06:33
Date: Mon, 17 Oct 2016 06:33
10 lines
2027 bytes
2027 bytes
On Monday, October 17, 2016 at 3:10:30 AM UTC+2, Borneq wrote: > W dniu 16.10.2016 o 22:25, Marek Borowski pisze: > > Pytanie czy bezpośrednie lączenie C++ z asm jest konieczne. Mozna wszak > > zadeklarowac funkcje asemblerowe jako extern "C". > > To znaczy w assemlerze zostaje jak jest będzie dosłowna nazwa, a w > headerze dla C funkcja będzie extern "C"? No tak, bo kompilator C++ szuka nazwy zgodnej z tzw międleniem nazw. Pozdrawiam
Re: Linker C nie widzi procedury assemblerowej
Author: Borneq
Date: Tue, 18 Oct 2016 16:46
Date: Tue, 18 Oct 2016 16:46
11 lines
1890 bytes
1890 bytes
W dniu 17.10.2016 o 08:33, M.M. pisze: > No tak, bo kompilator C++ szuka nazwy zgodnej z tzw międleniem nazw. > Pozdrawiam A jak najlepiej zrobić coś takiego: projekt w C++ z przestrzeniami nazw ale mają być pliki assemblerowe, ma to kompilować się w Visualu jak GCC. Pliki assemblerowe będą różne w zależności od trybu 32bit czy 64bit, czy typu procesora a oprócz tego będzie wersja generic w C (niekoniecznie C++). Myślałem nad assemblerem wbudowanym w kompilator C++, ale Visual i GCC mają różny, a Yasm może kompilować nawet składnię GAS (rozszerzenie plików .s).
Re: Linker C nie widzi procedury assemblerowej
Author: Matt D.
Date: Tue, 18 Oct 2016 20:03
Date: Tue, 18 Oct 2016 20:03
22 lines
2222 bytes
2222 bytes
On 10/18/2016 18:46, Borneq wrote: > W dniu 17.10.2016 o 08:33, M.M. pisze: >> No tak, bo kompilator C++ szuka nazwy zgodnej z tzw międleniem nazw. >> Pozdrawiam > > A jak najlepiej zrobić coś takiego: projekt w C++ z przestrzeniami nazw > ale mają być pliki assemblerowe, ma to kompilować się w Visualu jak GCC. > Pliki assemblerowe będą różne w zależności od trybu 32bit czy 64bit, czy > typu procesora a oprócz tego będzie wersja generic w C (niekoniecznie > C++). Myślałem nad assemblerem wbudowanym w kompilator C++, ale Visual i > GCC mają różny, a Yasm może kompilować nawet składnię GAS (rozszerzenie > plików .s). Tak to robi projekt OpenSSL (na dobre i na zle): https://github.com/openssl/openssl/tree/master/crypto/perlasm Patrz "Chapter 19: Processor-specific code" tutaj: https://www.openssl.org/policies/codingstyle.txt Pozdrawiam, Matt
Thread Navigation
This is a paginated view of messages in the thread with full content displayed inline.
Messages are displayed in chronological order, with the original post highlighted in green.
Use pagination controls to navigate through all messages in large threads.
Back to All Threads