kategorie: ANSI C, C++
[#31] Re: [C/C++, VisualStudio] Amiga C/C++ wtyczka do Visual Studio

@Hexmage960, post #22

A czy ten VSCode jest lepszy do LaTeXa niż TeXMaker albo TeXStudio?


Tamtych nie uzywalem. Probowalem TeXShop, TeXNicle i paru innych. A potem przyszedl VSCode i wszystko pozamiatal.

Oferuje podobne możliwości w zakresie edycji dokumentów LaTeX? Pytam, bo piszę w LaTeXu.


Podglad z synchronizacja, zarzadzanie calym projektem, paleta z symbolami, struktura projektu pokazana w jednym drzewie, podpowiadanie skladni, slownik. No i integracja z GIT-em. Do tego te same skroty klawiszowe i edytor do ktorego jestem przyzwyczajony przy programowaniu albo obrobce danych w Jupyterze. Nie wiem co jeszcze jest potrzebne ;)

szczerze powiedziawszy nie wiem czego ta wtyczka nie oferuje :)

Tu masz link do wtyczki: link
[#32] Re: [C/C++, VisualStudio] Amiga C/C++ wtyczka do Visual Studio

@teh_KaiN, post #9

W tej chwili mam dość spory projekt C++ i żre mi coś koło 500-600MB RAMu. Co to jest w dobie posiadania (w moim przypadku) 8 czy (już dość często) 32GB w kompie? Miałem kiedyś podobne podejście co do oszczędzania zasobów ale się z tego wyleczyłem - w Embedded, w którym na ogół siedzę jest to wciąż ważne, ale w desktopach? Już dawno nie.

Podobnie myślą developerzy piszący 3 komunikatory, które musisz mieć odpalone, kilka narzędzi. Każdy trzyma w sobie osobną instancję Chrome. Do tego jakieś 3 zakładki w przeglądarce, które też ważą jak pogrzane. I pomimo 32GB RAM plik wymiany rośnie.

Poza tym mi nawet nie chodzi tylko o zużycie RAMu. Bardziej irytuje mnie brak spójności takich aplikacji. Z punktu użytkownika to są crapy, które bardziej walczą z systemem operacyjnym zamiast z nim współpracować. Zupełnie nie wykorzystują możliwości systemu, są pełne jakichś niestandardowych, niespójnych rozwiązań, nieoptymalnie korzystają z baterii, różnych mechanizmów. Może pod Windows to jest akceptowalne, bo Microsoft nawet nie wie co to znaczy "spójność", a bałagan to trzon MS Office i Windows. Oni najchętniej zaimplementowaliby wszystkie API jakie są na świecie i pozwolili je ze sobą mieszkać nawet gdyby się wzajemnie wykluczały. szeroki uśmiech Ta firma spokojnie mogłaby zmienić nazwę na Bajzelsoft. No ale pod np. macOS to jest strasznie irytujące gdy otwiera się program, a w środku WebView rządzące się swoimi prawami, olewające kilkanaście świetnych rozwiązań systemowych dla których używa się właśnie tej platformy. Zresztą pod AmigaOS czy MorphOS też takie rozwiązania mnie strasznie irytują i traktuję je tylko jako ostatnioą deskę ratunku. Piękno prawdziwych natywnych aplikacji stworzonych zgodnie z wytycznymi projektantów systemu operacyjnego jest nieosiągalne dla aplikacji tworzonych w tych różnych bałaganiarskich "nowoczesnych" multiplatformowych rozwiązaniach. Programy użytkowe to nie gry, tutaj człowiek wymaga spójność z platformą.

Ostatnia aktualizacja: 03.09.2020 10:59:49 przez MDW
[#33] Re: [C/C++, VisualStudio] Amiga C/C++ wtyczka do Visual Studio

@MDW, post #32

Jeśli chodzi o stosowanie rozwiązań systemowych to by musiało wynikać z założenia, że twórca systemu robi to wszystko najfajniej, najlepiej. A tak nie jest. Taki MS i niemal nikt nie używa wbudowanej przeglądarki, przy pierwszej sposobności instaluje się też archiwizatory, odtwarzacze muzyki, wideo czy przeglądarki zdjęć. I słusznie. A MacOS to tylko większa dyktatura. Wygląda to może i dobrze, ale nie sądzę by uszczęśliwianie na siłę było czymś co mnie cieszy.

Ostatnia aktualizacja: 03.09.2020 11:21:19 przez abcdef
[#34] Re: [C/C++, VisualStudio] Amiga C/C++ wtyczka do Visual Studio

@abcdef, post #33

Dyktatura to jedyna skuteczna metoda na to żeby developerzy nie robili z systemu koszmaru.
Wiemy od lat, że punktem honoru typowego użytkownika Windows jest wyeliminowanie jak największej ilości elementów systemu i zastąpienie ich zbieraniną spoza systemu. Ale mi nawet nie o to chodzi żeby używać przeglądarki www czy obrazków. Chodzi mi raczej o to żeby korzystać z normalnych mechanizmów dostarczanch przez system. Np.: obsługi wysokich rozdzielczości i optymalnych metod UI, używania systemowych powiadomień (które użytkownik ogarnia z jednego miejsca), mechanizmów zarządzania energią, trybami ciemny/jasny, systemem historii dokumentów, systemową chmurą, synchronizacją z pozostałymi elementami ekosystemu (smartfon, tablet, zegarek, TV), współpracą z systemem synchronizowanych haseł, metod logowania, poprawną obsługą przez programy swoich dokumentów. Te wszystkie multiplatformowe craplikacje mają to wszystko w nosie i sprawiają, że korzysta się z połowy możliwości dostarczanych przez system operacyjny.

Odpalenie Chrome i zalogowanie się do Google to żaden ekosystem. Takie webowe rozwiązania to prowizorka będąca namiastką i kołem ratunkowym dla niekompletnych ekosystemów. Microsoft nie wie, że system operacyjny należy sprzątać ze starych rozwiązań, a nie tylko dokładać i mordować się z błedami. Chociaż oni inaczej nie mogą, bo mają zależności zmuszające ich do trzymania starego bałaganu. Jeżeli odetną prehistoryczne WinAPI to zginą. Taki Windows przecież jest od lat - kiedyś Windows RT, teraz Windows for ARM. Każdy ma go w nosie, bo nic się na nim nie uruchamia. szeroki uśmiech Microsoft stoi na kulawych nogach ale musi na nich stać, bo innych ni ma.
[#35] Re: [C/C++, VisualStudio] Amiga C/C++ wtyczka do Visual Studio

@nogorg, post #21

to jest prawdziwy (skalowalny wektorowo) ttf czy bitmapa?
[#36] Re: [C/C++, VisualStudio] Amiga C/C++ wtyczka do Visual Studio

@MDW, post #32

@MSchulz

Dziękuję za info.

@MDW

Piękno prawdziwych natywnych aplikacji stworzonych zgodnie z wytycznymi projektantów systemu operacyjnego jest nieosiągalne dla aplikacji tworzonych w tych różnych bałaganiarskich "nowoczesnych" multiplatformowych rozwiązaniach.

Dodam w temacie kodowania na Amidze, że również w przypadku Amigi uważam, że rozwiązania systemowe są po prostu najlepsze. Gadtools, Intuition, BOOPSI (również MUI, ale ja z niego nie korzystałem) powstały i rozwijały się przez długi czas wysiłkiem wielu ludzi, którzy zajmowali się Amiga OS.

Ci ludzie włożyli sporo pracy, by te biblioteki były funkcjonalne. Cechuje je też niezawodność.

Poza tym są bardzo wygodne - wystarczy otworzyć odpowiednią bibliotekę. Potrafią też być wydajne przy odpowiednim użyciu! Ich stosowanie oznacza kompatybilność na różnych Amigach oraz przyjazność dla użytkownika.

Po to one powstały.

System Amigi ma też kilka minusów. Wliczam w to brak wsparcia dla requesterów z gadżetami gadtools, ale bezproblemowo można budować własne requestery za pomocą okienek. Niepełna jest też obsługa datatypów.

Jednakże system jest rozszerzalny głównie dzięki BOOPSI, na których oparte są też datatypy.

W przypadku gier rzeczywiście warto wspomóc się niskopoziomowymi rozwiązaniami, ale i system potrafi być sprzymierzeńcem. Amiga OS oferuje niskopoziomowe funkcje do przerwań, koprocesorów graficznych itp., z których chętnie korzystam i polecam każdemu programiście Amigowemu.
[#37] Re: [C/C++, VisualStudio] Amiga C/C++ wtyczka do Visual Studio

@Kefir_Union, post #35

https://github.com/rewtnull/amigafonts/tree/master/ttf, ale ogonki sam sobie dorysowałem.
[#38] Re: [C/C++, VisualStudio] Amiga C/C++ wtyczka do Visual Studio

@teh_KaiN, post #11

zaraz sobie bedę instalował w końcu i spróbuje skompilować coś prostego na poczatek (docelowo chciałem potestować RTG)..

ale zaraz no właśnie...

Brak standardowych bibliotek C? chodzi o stdlib i stdio? no to jak ja napiszę sobie
"Hello World!" ?? xDDD
[#39] Re: [C/C++, VisualStudio] Amiga C/C++ wtyczka do Visual Studio

@mateusz_s, post #38

Normalnie.
#include <proto/dos.h>

int main(void)
{
    PutStr("Hello World!\n");
    return 0;
}
[#40] Re: [C/C++, VisualStudio] Amiga C/C++ wtyczka do Visual Studio

@Krashan, post #39

tak, właśnie widzę, ze trzeba systemowych funkcji używać.. :)

cos mi nie gra za bardzo, bo minimalny kod, z jakim mogę uruchomić "Hello World"
to taki:

#include <proto/exec.h>
#include <proto/dos.h>

struct ExecBase *SysBase;
struct DosLibrary *DOSBase;

int main() 
{
	SysBase = *((struct ExecBase**)4UL);

	// used for printing
	DOSBase = (struct DosLibrary*)OpenLibrary((CONST_STRPTR)"dos.library", 0);
	if (!DOSBase)
		Exit(0);

	PutStr("Hello World");

	Delay(50);

	CloseLibrary((struct Library*)DOSBase);
}


i co najdziwniejsze nie pozwala mi nazwać inaczej wskaznika do DosLibrary niż DOSBase, co oni tam na sztywo coś zapisali co od tego kompilatora?
struct DosLibrary *DOSBase;
Jak użyje innej zmiennej niz DOSBase np. DOSBase1, to nie ma referencji do funkcji PutStr..

przegladałem wcześniej sporo przykładów i tutków i nie było takiej potrzeby..

Ostatnia aktualizacja: 03.09.2020 22:13:52 przez mateusz_s
[wyróżniony] [#41] Re: [C/C++, VisualStudio] Amiga C/C++ wtyczka do Visual Studio

@mateusz_s, post #40

Zauważ, że jak wywołujesz funkcje dos.library PutStr("Hello World") i Delay(50), to nie precyzujesz skąd kompilator ma wziąć te funkcje.

Kompilator zakłada, że istnieje zmienna globalna "DOSBase", która tę bazę zawiera.
[wyróżniony] [#42] Re: [C/C++, VisualStudio] Amiga C/C++ wtyczka do Visual Studio

@Hexmage960, post #41

To w inkludach jest:
(w proto/dos.h)
extern struct DosLibrary *DOSBase;
i potem faktycznie używane w wywołaniach funkcji, np. w pragmas/dos_pragmas.h:

#pragma libcall DOSBase Open 1e 2102

dlatego nazwa zmiennej dla bazy biblioteki musi być ustalona, a nie dowolna.
[#43] Re: [C/C++, VisualStudio] Amiga C/C++ wtyczka do Visual Studio

@BigBang, post #42

Tak, zgadza się.. właśnie też zacząłem szukać po includach tej stałej, jest ok.
[wyróżniony] [#44] Re: [C/C++, VisualStudio] Amiga C/C++ wtyczka do Visual Studio

@mateusz_s, post #40

Najwyraźniej ten kompilator nie dołącza też kodu startowego. Dlatego dos.library musisz otworzyć i zamknąć sam.
[#45] Re: [C/C++, VisualStudio] Amiga C/C++ wtyczka do Visual Studio

@Krashan, post #44

Tak, jest bardzo spartańsko w porównaniu z np. Bebbokompilatorem, dlatego cały czas trzymam kciuki że jednak chłopaki połączą siły i dostaniemy najlepsze rzeczy z obu światów.

Jeszcze jedna ważna uwaga - kompilator Bartmana nie pozwala lokować argumentów funkcji w konkretnych rejestrach, tak jak pozwala na to np. kompilator Bebbo. Z tego też powodu napisanie zgodnego z systemem handlera przerwań nie jest możliwe.
[#46] Re: [C/C++, VisualStudio] Amiga C/C++ wtyczka do Visual Studio

@teh_KaiN, post #45

Jeszcze jedna ważna uwaga - kompilator Bartmana nie pozwala lokować argumentów funkcji w konkretnych rejestrach, tak jak pozwala na to np. kompilator Bebbo. Z tego też powodu napisanie zgodnego z systemem handlera przerwań nie jest możliwe.

Ale rozumiem, że obsługuje obiekty wygenerowane przez kompilator/asembler?

Bo w przypadku funkcji typu CallBack można posłużyć się bardzo krótką procedurą w asemblerze, która odkłada rejestry na stos i wywołuje naszą funkcję w języku wysokiego poziomu C.

Wykorzystujemy fakt, że CallBack dostaje dane użytkownika w rejestrze adresowym A1, za pośrednictwem którego możemy przekazać adres naszej procedury w C.

W przypadku struktury Hook, adres procedury w C umieszczamy/pobieramy z pola h_SubEntry.

Ta metoda przydaje się do przerwań systemowych, do procedur typu CallBack Hook, jak również handlerów input.device itp.

W przypadku przerwań można poprawnie zapalić lub zgasić znacznik Zero (Z) procesora.

Uwaga: Należy odkładać na stos argumenty w odwrotnej kolejności. Należy też pamiętać o tym, jakie rejestry muszą być zachowane i odtworzone przy powrocie z funkcji (należy zapoznać się z konwencją w dokumentacji)!

Ważne: nasza funkcja w C musi przestrzegać konwencji (zapamiętać D2-D7 i A2-A6, jeśli ich używa). Jeżeli nie przestrzega, musimy sami zapamiętać i odtworzyć rejestry.

Jeszcze nota: powinniśmy używać tylko zmiennych lokalnych w naszej funkcji w C wywoływanej z zewnątrz, bo zmienne globalne wymagają umieszczania bazy zmiennych w rejestrze A4. Jest na to sposób - słowo kluczowe saveds obok funkcji. Ale to obowiązuje zawsze niezależnie od kompilatora.

Przykład:
xdef _wstawkaAsemblerowa ; eksportujemy symbol

; d0: parametr 1
; d1: parametr 2
; a0: parametr 3
; a1: dane użytkownika (tutaj adres procedury w C)

_wstawkaAsemblerowa:
    pea (a0)
    move.l d1,-(sp)
    move.l d0,-(sp)

    jsr (a1)
    clr.l d0
    rts

A w C implementujemy naszą funkcję:

ULONG naszaFunkcja(ULONG parametr1, ULONG parametry2, APTR parametr3)
{
   /* Definicja funkcji */
}

Jest to proste i wygodne rozwiązanie. Wymaga drobnej wstawki asemblerowej. Stosuję zawsze przy tego typu funkcjach.

Ostatnia aktualizacja: 04.09.2020 14:14:46 przez Hexmage960
Na stronie www.PPA.pl, podobnie jak na wielu innych stronach internetowych, wykorzystywane są tzw. cookies (ciasteczka). Służą ona m.in. do tego, aby zalogować się na swoje konto, czy brać udział w ankietach. Ze względu na nowe regulacje prawne jesteśmy zobowiązani do poinformowania Cię o tym w wyraźniejszy niż dotychczas sposób. Dalsze korzystanie z naszej strony bez zmiany ustawień przeglądarki internetowej będzie oznaczać, że zgadzasz się na ich wykorzystywanie.
OK, rozumiem