Czy warto się uczyć Assemblera/kodu binarnego?

Odpowiedz Nowy wątek
2015-02-21 21:28
0

Powiedzcie mi czy warto się uczyć ASM lub kodu zero-jedynkowego i czy jakbym chciał napisać system operacyjny to lepiej czysty C ze wstawkami ASM, sam Assembler czy kod binarny?

Pozostało 580 znaków

2015-02-21 21:40
123456
0

Jak system to tylko i wyłącznie kod zer-jedynkowy.

Pozostało 580 znaków

2015-02-21 22:44
0

Kodu binarnego do programowania nie warto się uczyć. Chyba, że masz zamiar konstruować procesory, czy coś w ten deseń.
Obecnie systemy pisze się w C/C++ z wstawkami w ASM. Słyszałem o systemie napisanym całkowicie w ASMie razem z systemem okien, który mieścił się na dyskietce 1.44MB

Pozostało 580 znaków

2015-02-21 22:50
2

Nigdy nikt nie programował w "kodzie binarnym" (projektowania bramek logicznych nie zaliczam do programowania!). W kodzie maszynowym, jeśli juz, to pisało się raczej za pomocą liczb szesnastkowych ze względu na wygodę adresowania. Zresztą różnica między asemblerem a kodem maszynowym w takiej postaci wcale nie jest taka wielka, ot zamiast mnemoników typu "mov" użyłbyś numeru danego rozkazu. Niemniej dla ułatwienia sobie życia i dla większej czytelności wprowadzono mnemoniki.

Znajomość asemblera jest wartościowa, ale zwykle nie ma sensu pisać w nim bezpośrednio kodu. Niemniej do analizy działania czy do debugowania może się przydać.

Z twoich pytań wynika że nie potrafisz właściwie nic w tym zakresie i miną lata (!) zanim w ogóle będziesz mógł pomyśleć o czymś takim jak pisanie OSa więc moja rada jest taka: nie zawracaj sobie teraz glowy "co będzie lepsze przy pisaniu OSa" tylko naucz sie programować.


Masz problem? Pisz na forum, nie do mnie. Nie masz problemów? Kup komputer...
No to doradź mi czy szflifować dalej C++ i uczyć się OpenGL, czy uczyć się Javy, C# czy nauczyć się PHP i Perla? - hubot 2015-02-22 11:01
Może zastanów się co chcesz finalnie robić - strony czy programy ? W PHP I Perlu to OSa sobie nie zaprogramujesz lol. - pszlaga 2015-02-22 22:17

Pozostało 580 znaków

2015-02-22 10:07
0

resztą różnica między asemblerem a kodem maszynowym w takiej postaci wcale nie jest taka wielka, ot zamiast mnemoników typu "mov" użyłbyś numeru danego rozkazu.

Tylko że jest wiele różnych movów zależnie od rodzaju adresowania i użytych rejestrów. Za dużo do zapamiętania. Liczenie względnych ofsetów do skoków przy zmiennej długości rozkazu też przyjemne nie będzie.

Pozostało 580 znaków

2015-02-22 10:30
1

Programowanie binarne to np.:
płachta Zygalskiego: http://pl.wikipedia.org/wiki/[...]mediaviewer/File:P%C5%82achtaZygalskiego-_decrypting_Enigma.jpg

Czyli ręczne tworzenie kart z kodem binarnym.

Programowanie maszynowe to pewnie wszystko poniżej poziomu assemblera, czyli:

  • kodowanie (edycja, korekty) w kodzie hex
  • programowanie przyciskami (starsze komputery, kalkulatory)

Takie programowanie przydaje się gdy assembler przestaje być wygodny albo wręcz nie jest dostępny.
Nie wymaga nie wiadomo jakiego doświadczenia, robiłem coś takiego po roku pracy z komputerami.

Assembler bardzo się przydaje:

  • przy tworzeniu OS jest niezbędny do uruchomienia niektórych instrukcji specjalnych
  • przy optymalizacji programów C/C++ gdy chcesz podejrzeć co kompilator wymyślił
  • przy optymalizacji programów C/C++ gdy chcesz dodać jakąś wstawkę ASM, która wykorzystuje jakąś ciekawą instrukcję która jest bardzo przydatna w algorytmie, np. POPCNT

To ostatnie można częściowo uniknąć stosując tzw. "compiler intrinsics", czyli instrukcje ASM które są skonwertowane do funkcji wyższego poziomu (a właściwie są ich cieniem).

Stworzenie własnego OS nie jest takie trudne jeśli ma się odpowiednie materiały, przy okazji uczy wielu rzeczy o komputerach.
Na PC można próbować wykorzystywać do tego np. VirtualBox + ew. jakaś automatyzacja przez Pythona, dzięki czemu cykl kompilacja-test-korekta nie będzie taki długi jak przy prawdziwym odpaleniu systemu.

Jeden z pierwszych linków w wynikach dla hasła "simple OS for pc in c":
http://www.cs.bham.ac.uk/~exr[...]sys/10_11/lectures/os-dev.pdf


Szacuje się, że w Polsce brakuje 50 tys. programistów
Nie wymaga nie wiadomo jakiego doświadczenia, robiłem coś takiego po roku pracy z komputerami. Ile Ty masz lat? ;p - satirev 2015-02-22 10:37
Powiedzmy że było to w zeszłym stuleciu :) - vpiotr 2015-02-22 10:41

Pozostało 580 znaków

Odpowiedz
Liczba odpowiedzi na stronę

1 użytkowników online, w tym zalogowanych: 0, gości: 1, botów: 0