Co nowego na forum?

Tabelki Test dziś, 04:57

dilax dodał komentarz w Wyświetlanie danych w przeglądarce za pomocą php z bazy psql

dziś, 05:47 nic to mi nie dało, dałem $result=pg_query($con, $query); var_dump($studenci); while...

furious programming dodał wątek Tabelki

dziś, 04:57 first second 0 0 1 1 2 2

somekind dodał post w Programowanie w parach

dziś, 04:15 Zielony Jeleń napisał(a): Co sądzicie i czy macie jakieś doświadczenia w programowan...

somekind dodał komentarz w INFORMATYKA na 2-dwóch uczelniach. [STUDIA/opinie]

dziś, 04:09 A gdzie zakłada się, że ktoś wcześniej programował?

somekind dodał post w Jak zabrać się za fronted dla aplikacji .NET Core API

dziś, 04:06 Zimny Lew napisał(a): który z framework'ów jest teraz na czasie i którego warto zgłę...

somekind dodał post w C# pomoc z odpowiedziami

dziś, 03:49 Autor pytań nie zna C#.

somekind dodał komentarz w git - połączenie gui (sourcetree) z repozytorium na zdalnym serw...

dziś, 03:38 Problem owszem jest, ale nie w Gicie tylko między krzesłem a klawiaturą.

samouczek dodał komentarz w git - połączenie gui (sourcetree) z repozytorium na zdalnym serw...

dziś, 03:16 Pomijam nastawienie etet100, zaciekawił mnie tylko problem, bo szczerze jak go w ogó...

somekind dodał post w Dylemat technologiczny junior developera po 8 miesiącach pracy.

dziś, 03:05 LukeJL napisał(a): dobre praktyki Nie ma czegoś takiego. Wszystko może być zarówno d...

iamb dodał post w Zmiana wartości pola prywatnego w obiekcie znajdującym się w tab...

dziś, 02:42 Panie, to już za wysokie tematy trochę na moją marną studencką wiedzę, mógłbyś jakoś...

kq dodał post w Zmiana wartości pola prywatnego w obiekcie znajdującym się w tab...

dziś, 02:38 Czyli zwracasz kopię, modyfikujesz kopię, oczekujesz, że zmodyfikowany zostanie oryg...

iamb dodał post w Zmiana wartości pola prywatnego w obiekcie znajdującym się w tab...

dziś, 02:37 Taka elegancka jest: Towar Zamowienie::getTowar() { return towar; }

kq dodał post w Zmiana wartości pola prywatnego w obiekcie znajdującym się w tab...

dziś, 02:36 My też, szkoda, że nie pokazałeś funkcji getTowar()

marmite dodał wątek Programowanie wspołbieżne C#

dziś, 02:36 Cześć, chciałbym zacząć naukę z programowaniem wielowątkowym i asynchronicznym w C#....

iamb dodał wątek Zmiana wartości pola prywatnego w obiekcie znajdującym się w tablicy.

dziś, 02:33 Potrzebuje zmieniać wartość pola prywatnego obiektu, który jest polem drugiej klasy,...

somekind dodał post w git - połączenie gui (sourcetree) z repozytorium na zdalnym serw...

dziś, 02:29 etet100 napisał(a): Miał ktoś taki problem? Nie. Lludzie raczej używają Gita normaln...

somekind dodał komentarz w git - połączenie gui (sourcetree) z repozytorium na zdalnym serw...

dziś, 02:27 Serio chce Ci się gadać z kimś, kto Cię obraża?

somekind dodał post w Gospodarka - Kapitalizm vs Etatyzm/Socjalizm

dziś, 02:19 trojanus napisał(a): widzę, że pojedynek Adam Smith vs. Karol Marx wiecznie żywy Prz...

trojanus dodał komentarz w Co junior powinnien umieć?

dziś, 02:19 @samouczek: im dłużej patrzysz tym więcej zobaczysz

Popularne wpisy na mikroblogu

stryku
2017-04-24 21:24

#templejty

  1. Pracuję nad przykładem do ctai v2.0 (ctai - compile time assembly interpreter)
  2. Napisalem kod asm
  3. Nie kompiluje się
  4. Błędy nie mieszczą się w clionowym okienku
  5. Odpalam make z palca z przekierowaniem do out.txt
  6. vim przycina się przy otwieraniu - musi być grubo
  7. ll
  8. Widzę takie coś

Będzie ciekawie dzisiaj

stryku

Komp sam w sobie daje radę, czas to zoptymalizować ;)

J0ras

A można było wrzucić problem na forum :D

mar-ek1
2017-04-23 13:11

5 powodów, za które polubiłem JavaScirpt pracując z nim bardziej amatorsko. Mniej technicznie, a bardziej ideologicznie :P Osób twardo stroniących od JSa nie przekonam, ale niezdecydowanych może :D
http://zajacmarek.com/2017/04/5-powodow-ktore-lubie-javascript/

scibi92

No właśnie, przy takiej ilości framerków to już masakra totalna :D

scibi92

W Javie przynajmniej nie muszę uczyć się nowego co pół roku :P Tak samo jak z tymi narzędziami budowania, masakra...

msm
2017-04-20 22:18

Znudzony abstrakcjami w Javie? Uważasz że C to język wysokiego poziomu? Pisanie w asemblerze jest dla Ciebie za proste? Kod maszynowy czytasz jak prozę, a tablicę opkodów znasz lepiej niż tabliczkę mnożenia?

Może czas zejść poziom niżej?

Przez święta stwierdziłem że koniec z tymi silikonowymi abstrakcjami, i czas stworzyć własne (proste) CPU- przy pomocy FPGA.
Na screenie wynik działania prostego programu, zdefiniowanego przez statyczny RAM:

  signal Memory: MemoryStore := (
    0 => X"0302", -- LDL A, 2
    1 => X"0401", -- LDL B, 1
    2 => X"2334", -- ADD A, B
    3 => X"0E02", -- JMP 02
    others => X"0000"
  );

Kilka słów wytłumaczenia:

  1. Wykonywany program to prosta pętla a=2; while (true) { a += 1}
  2. Architektura jest 16bitowa, czyli rejestry mają po 16 bitów. Co ciekawe, technicznie w mojej architekturze bajty też są 16bitowe (najmniejsza adresowalna jednostka pamięci to 16 bitów!)
  3. Format instrukcji jest bardzo prosty, wręcz trywialny: pierwszy nibble to opcode (typ operacji), drugi to rejestr docelowy, pozostały bajt to albo dwa rejestry źródlowe albo stała:
    0 -> LDL A Imm16 (load low 8 bits of register)
    1 -> LDH A Imm16 (load high 8 bits of register)
    2 -> ADD A B C (A = B + C)
    3 -> SUB A B C (A = B - C)
    4 -> MUL A B C (A = B * C)
    5 -> DIV A B C (A = B / C)
    6 -> XOR A B C (A = B ^ C)
    7 -> OR A B C (A = B | C)
    8 -> AND A B C (A = B & C)
    9 -> CMV A B C (if ((C & FLAGS) != 0) { A = B; })
    A -> LDM A B Imm8 (A = RAM[A + C])
    B -> STM A B Imm8 (RAM[A + C] = B)
  4. Instruction pointer to normalny rejestr (o numerze 14) (tak jak w ARM, inaczej niż w x86), więc zapis do rejestru 0xE jest równoważny skokowi. Jeszcze nie zaimplementowane, ale w planach rejestry to:
    0 -> NULL (jak w MIPS - zawsze zero)
    1-13 -> general purpose registers
    14 -> instruction pointer
    15 -> flags
  5. Procesor zajmuje 5 cykli na opcode (patrz na screenie: state, clock): FETCH -> DECODE -> REGREAD -> ARITH -> WRITEBACK. W planach jest skrócenie tego (format instrukcji jest prosty, więc DECODE jest niepotrzebne) i dodanie superskalarności (wykonywanie 2 instrukcji na raz).
  6. Na potrzeby testów stworzylem też własny RAM - ot, magia FPGA (było to zaskakująco proste). Na drugim (prostszym) screenie, wynik testu RAMu.
  7. Jeśli ktoś się nudzi, kod wrzuciłem na githuba: https://github.com/msm-code/msm-processing-unit. Nie jest to najaktualniejsza wersja, ale przynajmneij działa.

Morał: Można niżej niż asembler. Można niżej niż kod maszynowy. ...czy warto? Na pewno napisanie własnego procesora to ciekawe doświadczenie :P. Nie udało mi się go jeszcze wypalić na fizycznej płytce (posiadam takową - programowalną tylko z tego obrzydliwego xilinxa), razem z memory-mapped IO, ale prędzej czy później...

bednarz

Proszę Cie... o 1... nie wyjeżdżaj z tego kraju :)

alagner

@Alag jeszcze kwestia co kto lubi. Ja akurat pracowałem na jednym i drugim i narzędzia Altery zdecydowanie bardziej mi przypasowały.