Zwykle nie ma potrzeby pisać programu w assemblerze, ale trzeba znać i assembler i budowę programowanego procesora żeby napisać porządny kod.
To nie musi być jakaś zaawansowana wiedza i znajomość, zwykle wystarczą podstawy, ale bez tego wychodzą cuda...
Ostatnio walczyłem z poprawianiem programu, w którym pan "programista" na 32-bitowym procesorze użył 16-bitowych zmiennych, które się przepełniały i program się sypał... Tak to jest kiedy ktoś pisze program na "czarną skrzynkę"...
Znaleziono 12 wyników
- 14 gru 2022, 20:59
- Forum: Na luzie
- Temat: Programowanie w C
- Odpowiedzi: 54
- Odsłony: 2335
- 15 lis 2022, 20:59
- Forum: Na luzie
- Temat: Programowanie w C
- Odpowiedzi: 54
- Odsłony: 2335
Re: Programowanie w C
Ja na prawdę nie mogę uwierzyć, z kim tutaj rozmawiam...drzasiek90 pisze: ↑15 lis 2022, 20:44Zaś trzeba wertować dokumentację, żeby odszukać co to jest 0x10.
Wkleiłem kilka linijek wyciętych z programu, gówno wiecie co w tym programie jest, a mądrzycie się jeden przez drugiego...
A jest tam tak:
Kod: Zaznacz cały
// (TIMx->CR1 & 0x10) is direction bit
KOD JEST DOBRY I NAPISANY ZGODNIE Z ZASADAMI !
<rejest/zmienna>&<maska> jest prawidłowym sposobem testowania bitów.
Jeśli nie potraficie zrozumieć, to zapamiętajcie.
Więcej na ten temat dyskutować nie będę.
EOT
- 15 lis 2022, 20:22
- Forum: Na luzie
- Temat: Programowanie w C
- Odpowiedzi: 54
- Odsłony: 2335
Re: Programowanie w C
Następny poczuł się w obowiązku zakomunikować, że niczego nie rozumie, ale pogadać sobie musi....drzasiek90 pisze: ↑15 lis 2022, 19:51Kod tego typu co przedstawił tux jest rzeczywiście beznadziejny, ponieważ nie ma żadnego usprawiedliwienia aby wpisywać do rejestru (czy zmiennej) w taki sposób a tym bardziej, aby sprawdzać flagę w taki sposób.
Od tego są definicje poszczególnych bitów, zawierające ich nazwy. Odszukanie potem w dokumentacji, co było ustawione jest o wiele prostsze. A kompilator i tak to zamieni na to samo.
- 15 lis 2022, 19:27
- Forum: Na luzie
- Temat: Programowanie w C
- Odpowiedzi: 54
- Odsłony: 2335
Re: Programowanie w C
Jest nieprzenośny i taki ma być, bo odwołuje się do unikalnego sprzętu.
Zawiera. Złośliwie i z premedytacją go pominąłem.
Nie jest.
Ogólnie to ten kod miał być tylko przykładem, że nie tylko warto znać budowę procesora na który się pisze kod, ale nawet czasem jest to konieczne.
Tutaj (STM32) jest na przykład taka heca, że procesor jest 32-bitowy, ale licznik tylko 16-bitowy. Skąd ktoś traktujący procesor jako "czarną skrzynkę" ma wiedzieć jakiego typu zmiennych użyć?
Oczywiście ktoś piszący program na peceta nie musi wiedzieć co to jest tablica deskryptorów, ale jakieś ogólne pojęcie o budowie procesora mieć trzeba, choćby żeby wiedzieć dlaczego bardzo podobny kod wykonuje się dziesięć razy wolniej...
- 15 lis 2022, 16:03
- Forum: Na luzie
- Temat: Programowanie w C
- Odpowiedzi: 54
- Odsłony: 2335
- 15 lis 2022, 15:54
- Forum: Na luzie
- Temat: Programowanie w C
- Odpowiedzi: 54
- Odsłony: 2335
Re: Programowanie w C
Umiem (?:), tylko nie lubię, bo czytelność stawiam wyżej od zaoszczędzenia kilku znaków.
Natomiast Ty popisujesz się klasycznym buractwem, czyli jak się nie masz do czego przypieprzyć, to się czepiasz ortografii.
Tylko tutaj akurat kod jest napisany poprawnie, zgodnie ze standardem, a jak się Tobie nie podoba, to wyłącznie twój problem.
- 15 lis 2022, 15:25
- Forum: Na luzie
- Temat: Programowanie w C
- Odpowiedzi: 54
- Odsłony: 2335
Re: Programowanie w C
Co się tak uparłeś udowodnić że gówno wiesz i niczego nie rozumiesz?upanie pisze: ↑15 lis 2022, 14:45Napisz tak z kilkadziesiąt firmware-ów na mikrokontrolery, które są bogate w funkcjonalność (prawdziwą funkcjonalność a nie wysyłanie znaków po uarcie) a odechce Ci się poznawania ich od środka.
Takie bzdety o świadomości działania procesora, na który pisze się soft opowiadają ludzie, którzy bawią się a nie robią tego zawodowo.
Masz tu fragment mojego kodu:
Kod: Zaznacz cały
if (TIM2->CR1 & 0x10)
{
timer2_ovf-=0xFFFF;
}
else
{
timer2_ovf+=0xFFFF;
}
Zapewne tego nie widzisz i nie rozumiesz, ale znajomość wewnętrznej budowy procesora znakomicie uprościła kod.
Nigdy się nie dogadamy, bo ja programować uczyłem się w assemblerze 8080 i mam alergię na "programistów", którzy bez struct i this nawet LED-em nie potrafią pomrugać...
- 15 lis 2022, 14:05
- Forum: Na luzie
- Temat: Programowanie w C
- Odpowiedzi: 54
- Odsłony: 2335
- 15 lis 2022, 13:53
- Forum: Na luzie
- Temat: Programowanie w C
- Odpowiedzi: 54
- Odsłony: 2335
Re: Programowanie w C
Cały ten debilny offtopic przypomina mi debilną wojnę o to, czy w szkołach uczyć Basica czy Logo...
Co do samego Rusta, to z ciekawości poszukałem tego blinka na AVR...
Jak dla mnie, to kolejny język dla debili, dla których procesor to czarna skrzynka, do której nie wolno zaglądać, bo i tak się nie zrozumie...
Cóż, "programiści" którzy niczego nie rozumieją, ale pamiętają co trzeba napisać żeby zadziałało, to prawdziwa plaga. A potem żeby zagrać w kółko i krzyżyk trzeba zainstalować sto megabajtów bibliotek... Już przy Pythonie to było przerabiane, pewnie z Rustem będzie tak samo... No ale jak jest popyt, to musi być i podaż...
I to tyle na ten temat.
Co do samego Rusta, to z ciekawości poszukałem tego blinka na AVR...
Kod: Zaznacz cały
#![no_std]
#![no_main]
use ruduino::Pin;
use ruduino::cores::current::{port};
#[no_mangle]
pub extern fn main() {
port::B5::set_output();
loop {
port::B5::set_high();
ruduino::delay::delay_ms(1000);
port::B5::set_low();
ruduino::delay::delay_ms(1000);
}
}
Cóż, "programiści" którzy niczego nie rozumieją, ale pamiętają co trzeba napisać żeby zadziałało, to prawdziwa plaga. A potem żeby zagrać w kółko i krzyżyk trzeba zainstalować sto megabajtów bibliotek... Już przy Pythonie to było przerabiane, pewnie z Rustem będzie tak samo... No ale jak jest popyt, to musi być i podaż...
I to tyle na ten temat.
- 14 lis 2022, 20:39
- Forum: Na luzie
- Temat: Programowanie w C
- Odpowiedzi: 54
- Odsłony: 2335