No ACL setup yet! Denying access to everyone.
pl:edu:zmitac:n1z:ja:lab3
Differences
This shows you the differences between two versions of the page.
| Both sides previous revisionPrevious revisionNext revision | Previous revision | ||
| pl:edu:zmitac:n1z:ja:lab3 [2021/04/10 17:19] – [Dołączanie biblioteki DLL do kodu w C#] pczekalski | pl:edu:zmitac:n1z:ja:lab3 [2022/04/23 16:03] (current) – [Konfiguracja środowiska] pczekalski | ||
|---|---|---|---|
| Line 178: | Line 178: | ||
| <note warning> | <note warning> | ||
| <note warning> | <note warning> | ||
| + | |||
| + | W przypadku, gdyby pomimo ustawienia wspólnego folderu wynikowego nadal były zgłaszane błędy braku biblioteki DLL, istnieje możliwość, | ||
| + | |||
| + | <note warning> | ||
| + | <code xml> | ||
| + | |||
| + | < | ||
| + | < | ||
| + | < | ||
| + | </ | ||
| + | |||
| + | </ | ||
| + | </ | ||
| === Konfiguracja na potrzeby kodu unsafe oraz debuggowania === | === Konfiguracja na potrzeby kodu unsafe oraz debuggowania === | ||
| Do ustawienia pozostają jeszcze dwie opcje: | Do ustawienia pozostają jeszcze dwie opcje: | ||
| * Włączenie użycia kodu " | * Włączenie użycia kodu " | ||
| - | * Włączenie debuggowania kodu natywnego, co pozwoli na płynne przełączanie pomiędzy kodem wywołującym w C# i wywoływanym w assemblerze w jednej sesji debuggera. W tym celu we właściwościach projektu w jezyku C# należy wybrać sekcję " | + | * Włączenie debuggowania kodu natywnego, co pozwoli na płynne przełączanie pomiędzy kodem wywołującym w C# i wywoływanym w assemblerze w jednej sesji debuggera. W tym celu we właściwościach projektu w jezyku C# należy wybrać sekcję " |
| <figure asm3_13> | <figure asm3_13> | ||
| Line 190: | Line 203: | ||
| <figure asm3_14> | <figure asm3_14> | ||
| {{: | {{: | ||
| - | < | + | < |
| + | </ | ||
| + | <figure asm3_14_2> | ||
| + | {{: | ||
| + | < | ||
| </ | </ | ||
| - | ==== Przekazywanie wskaźników z poziomi | + | ==== Przekazywanie wskaźników z poziomu |
| Przekazywanie typów złożonych (tablic, obiektów, struktur) jest możliwe wyłącznie za pomocą wskaźników. Wskaźniki te są przekazywane jako typy int, 64-bitowe, w rejestrach. Ich interpretacja po stronie funkcji wywoływanej należy do programisty. Nieniej jednak po stronie języka C# nie jest to tak oczywiste. | Przekazywanie typów złożonych (tablic, obiektów, struktur) jest możliwe wyłącznie za pomocą wskaźników. Wskaźniki te są przekazywane jako typy int, 64-bitowe, w rejestrach. Ich interpretacja po stronie funkcji wywoływanej należy do programisty. Nieniej jednak po stronie języka C# nie jest to tak oczywiste. | ||
| Line 221: | Line 238: | ||
| W powyższym przykładzie pominięto przekazywanie do funkcji długości tablicy, gdyż jej rozmiar (6 elementów) jest z góry znany. W przypadku, gdy rozmiar tablicy jest zmienny, należy przekazać do funkcji w assemblerze jej długość jako osobny parametr. | W powyższym przykładzie pominięto przekazywanie do funkcji długości tablicy, gdyż jej rozmiar (6 elementów) jest z góry znany. W przypadku, gdy rozmiar tablicy jest zmienny, należy przekazać do funkcji w assemblerze jej długość jako osobny parametr. | ||
| - | Przykładowy kod w assemblerze, | + | <note important> |
| + | |||
| + | Przykładowy kod w assemblerze, | ||
| <code asm> | <code asm> | ||
| ProcAsm2 proc | ProcAsm2 proc | ||
| Line 353: | Line 372: | ||
| W szczególności, | W szczególności, | ||
| - Zsumowanie wektora danych typu uint (zadeklarowanych po stronie ,NET w postaci tablicy jednowymiarowej o wymiarze 20 zmiennych). Funkcja ma zwracać pojedynczą wartość (przez rejestr). Wskaźnik na tablicę źródłową oraz jej długość należy podać do funkcji w assemblerze poprzez rejestry. | - Zsumowanie wektora danych typu uint (zadeklarowanych po stronie ,NET w postaci tablicy jednowymiarowej o wymiarze 20 zmiennych). Funkcja ma zwracać pojedynczą wartość (przez rejestr). Wskaźnik na tablicę źródłową oraz jej długość należy podać do funkcji w assemblerze poprzez rejestry. | ||
| - | - Obliczenie wartości średnich dla zestawu zmiennych przechowywanych w postaci dwóch wektorów o długości 16, typu float, pozycja po pozycji, wynikiem ma być wektor średnich (o długości 16). Funkcja nie zwraca żadnej wartości. Wyniki są umieszczane w tablicy zadeklarowanej po stronie ,NET i przekazanej do funkcji jako wskaźnik. Sugerowane jest użycie struktury do przekazania danych do funkcji. Docelową tablicę należy zadeklarować po stronie języka C#. | + | - Obliczenie wartości średnich dla zestawu zmiennych przechowywanych w postaci dwóch wektorów o długości 16, typu float, pozycja po pozycji, wynikiem ma być wektor średnich (o długości 16). Funkcja nie zwraca żadnej wartości. Wyniki są umieszczane w tablicy zadeklarowanej po stronie ,NET i przekazanej do funkcji jako wskaźnik. Sugerowane jest użycie struktury do przekazania danych do funkcji. Docelową tablicę należy zadeklarować po stronie języka C#. Zalecane jest wykonanie operacji za pomocą pętli, tj. obliczanie osobno dla każdej pary. Można skorzystać albo z funkcji koprocesora arytmetycznego, |
| Powyższe operacje są od siebie niezależne, | Powyższe operacje są od siebie niezależne, | ||
pl/edu/zmitac/n1z/ja/lab3.1618067958.txt.gz · Last modified: by pczekalski
