• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

tworzenie podstawowych funkcji służących do tworzenia podstawowych funkcji w c++

Object Storage Arubacloud
0 głosów
530 wizyt
pytanie zadane 27 września 2018 w C i C++ przez program naczelny Gaduła (3,320 p.)
Witam!

Nie wiem z jakiegoż to powodu w internecie i po polsku i po angielsku nic o tym prawie nie ma! Mam na myśli tworzenie funkcji pokroju printf, scant, cout, rand itp. Wiem iż funkcja printf zawiera w sobie również inne funkcje, które prawdopodobnie zawierają w sobie funkcje bliżej procesora i teraz takie pytanie - czy jest możliwe napisać funkcje printf bez assemblera? bo jak dobrze rozumiem to nisko poziomowe funkcje w języku c/++ są zbudowane na poczciwym assemblerze? bo nie mogę sobie konceptualnie wyobrazić napisania funkcji do języka c w języku c, za pomocą for, while i operacji bitowych? Czy jakiś doświadczony Przyjaciel odpowie na moje pytania?

2 odpowiedzi

+3 głosów
odpowiedź 27 września 2018 przez adrian17 Ekspert (345,160 p.)
wybrane 27 września 2018 przez program naczelny
 
Najlepsza

czy jest możliwe napisać funkcje printf bez assemblera?

Jeśli pytanie jest w kontekście współczesnego systemu operacyjnego, to sprawa wygląda trochę inaczej. Na przykładzie Linuxa - printf() z biblioteki standardowej  wykonuje formatowanie tekstu i sprawdzenie jego poprawności, ale do wykonania samego "pisania" odwołuje się do jądra systemu (tzw syscall) write(). Możesz ręcznie zaimplementować printf() i inne funkcje w dokładnie tym samym stopniu, co biblioteka standardowa C - do momentu komunikacji z jądrem. Ta izolacja przez zapytanie do jądra jest między innymi po to, żebyś sam nie musiał (i nie mógł) schodzić "bliżej procesora".

komentarz 27 września 2018 przez program naczelny Gaduła (3,320 p.)
Czyli do operacji skomplikowanych i sięgania bebechów assembler, a do zwykłych programów funkcje system_call i program w c?

Zatem wirusy pisze się np: na ass z połączeniem c?
komentarz 27 września 2018 przez adrian17 Ekspert (345,160 p.)

Kernel też w (względnie) bardzo małym stopniu używa asemblera. Używa się go albo do bardzo niskopoziomowych operacji których kompilator C nie pomaga reprezentować w C, w szczególności przy wczesnej inicjalizacji systemu (co nie jest takie częste), pisania zoptymalizowanego kodu (tylko jeśli kompilator nie potrafi tego zrobić za Ciebie (co też nie jest takie częste) i zabezpieczania przed lukami, gdy kolejność pojedynczych instrukcji ma znaczenie.

Zatem wirusy pisze się np: na ass z połączeniem c?

AFAIK bardzo rzadko jest taka potrzeba.

komentarz 27 września 2018 przez program naczelny Gaduła (3,320 p.)
A np: funkcja w c dla avr DDRX, jest napisana assemblerze? bo przecież musi jakoś skomunikować się maszynowo z MCu, a język c tego nie umożliwia..
komentarz 27 września 2018 przez adrian17 Ekspert (345,160 p.)
(nie kojarzę funkcji "DDRX". Co masz na myśli?)
komentarz 27 września 2018 przez program naczelny Gaduła (3,320 p.)
funkcja ustawiania portów wejścia wyjścia w mikrokontrolerach avr. Czyli funkcja wydaje mi się assemblerowska; Bo jak napisac w c funkcje sterującą..? chociaż nie wiem czyt to nie działa tak że funkcji procesorowej nie możesz napisać sam bo byś musiał znać strukturę mikrokontrolera na wylot?
komentarz 27 września 2018 przez adrian17 Ekspert (345,160 p.)

To nie jest funkcja.

DDRB = 0xFF;

DDRB to makro; ta linia po rozwinięciu makra wygląda tak:

(*(volatile unsigned char *)55)) = 0xFF;

Które jest poprawnym C, które kompilator skompiluje do odpowiednich instrukcji AVR.

0 głosów
odpowiedź 27 września 2018 przez j23 Mędrzec (194,920 p.)

czy jest możliwe napisać funkcje printf bez assemblera?

printf czy scanf tak, ale matematyczne funkcje w jakiejś tam części nie, bo te muszą odwoływać się bezpośrednio do instrukcji FPU/MMX/SSE.

Podobne pytania

0 głosów
1 odpowiedź 271 wizyt
0 głosów
1 odpowiedź 208 wizyt
0 głosów
2 odpowiedzi 797 wizyt
pytanie zadane 19 listopada 2016 w C i C++ przez Marceli99 Obywatel (1,160 p.)

92,626 zapytań

141,486 odpowiedzi

319,846 komentarzy

62,009 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...