-
Data: 2014-10-13 19:43:25
Temat: Re: prosty assembler
Od: Piotr <S...@w...pl> szukaj wiadomości tego autora
[ pokaż wszystkie nagłówki ]Dnia 13.10.2014 R.e.m.e.K <p...@w...pl> napisał/a:
> Dnia Mon, 13 Oct 2014 05:25:56 -0700 (PDT), firr napisał(a):
>
>>> nazwac "signed unsigned int" czy jakos inaczej)
>>
>> w sumie przy takich zlozeniach to np taki bajt jest nie tylko suma signed i
unsigned ale nawet sumą plus signed i minus unsigned, czyli jeden
>> bajt moze przechowywac np wartosci od -255 do 255
>
> Teraz to juz przechodzisz samego siebie, zaslugujesz juz na wielkie Ś przed swoim
nickiem!
>:-)
Daj spokój, zaczynało być "ciekawie" ;)
Tak żeby podkręcić firra: bajt to po pierwsze nie to samo co oktet (nie
zawsze to jest 8 bitów, choć obecnie najczęściej tak jest, ale na przykład
polska Odra miała inaczej :D) a po drugie nawet jeśli zakładać dla
uproszczenia, że to oktet, to czy to jest liczba, kolor piksela czy na
przykład informacja która lampka ma sięświecić a która nie, zależy od
kontekstu. Procesory po prostu nie wnikają, dla nich bity i bajty nie mają
"typu", są operacje na przykład logiczne, traktujące bity niezależnie (OR,
AND, XOR, NOT itd.), są operacje traktujące bity jako liczbę (ADC, MUL
itp.), są operacje w ogóle nie wnikające w zawartość (PUSH, PULL, IN, OUT)
itd. Dodatkowo ALU wielu procesorów potrafi ten sam bajt podczas operacji
arytmetycznych traktować w różny sposób (już nawet 6502 ze wspomnianego
przez firra C64), na przykład jako liczbę z zakresu -128..127 (w kodzie
uzupełnień do dwóch) lub jako liczbę z zakresu 0..99 (kod BCD). Poza tym
procesory mają najczęściej dwie flagi, przeniesienie i przepełnienie, dla
uproszczenia dla 8 bitów przeniesienie jest ustawiane gdy wynik (na
przykład dodawania) nie mieści się w 8 bitach, a przepełnienie gdy wynik
nie mieści się w 7 bitach - w ten sposób ten sam układ ALU może dodawać
liczby w kodzie U2 zarówno ze znakiem jak i bez znaku (nie musi wiedzieć
który wariant chce programista, bo układ bitów w wyniku będzie taki sam), a
w gestii programisty jest sprawdzanie flag i reakcja w zależności od tego
jak te dane chce traktować. Oczywiście przy mnożeniu/dzieleniu sprawa
wygląda inaczej :D
Co do poprzednich wywodów czy robić porównania od razu ze skokiem czy
nie... ja proponuję jeszcze inne podejście, takie jak na przykład mają
procesory ARM, czyli wykonanie instrukcji (dowolnej!) można uzależnić od
pewnych flag w rejestrze statusu, na przykład:
CMP R1,R2 # Porównanie R1 i R2 i ustawienie flag w rejestrze statusu
SUBGT R1,R2,R1 # Wykonanie odejmowania (wynik do trzeciego argumentu, tu
# wynik leci do R1) tylko wtedy gdy poprzednie CMP ustawiło
# flagi "zachodzi warunek 'większy niż'"
W ten sposób po CMP nie trzeba w ogóle wstawiać instrukcji skoku (ani CMP
nie musi mieć jej "wbudowanej").
Następne wpisy z tego wątku
- 14.10.14 14:48 firr
Najnowsze wątki z tej grupy
- Brednie w wiki - hasło Dehomag
- Perfidne ataki krakerów z KRLD na skrypciarzy JS i Pajton
- Instytut IDEAS może zacząć działać: "Ma to być unikalny w europejskiej skali ośrodek badań nad sztuczną inteligencją."
- Instytut IDEAS może zacząć działać: "Ma to być unikalny w europejskiej skali ośrodek badań nad sztuczną inteligencją."
- Instytut IDEAS może zacząć działać: "Ma to być unikalny w europejskiej skali ośrodek badań nad sztuczną inteligencją."
- U nas propagują modę na SI, a w Chinach naukowcy SI po kolei umierają w wieku 40-50lat
- C++. Podróż Po Języku - komentarz
- "Wuj dobra rada" z KDAB rozważa: Choosing the Right Programming Language for Your Embedded Linux Device
- Nowa ustawa o ochronie praw autorskich - opis problemu i szkic ustawy
- Alg. kompresji LZW
- Popr. 14. Nauka i Praca Programisty C++ w III Rzeczy (pospolitej)
- Arch. Prog. Nieuprzywilejowanych w pełnej wer. na nowej s. WWW energokod.pl
- 7. Raport Totaliztyczny: Sprawa Qt Group wer. 424
- TCL - problem z escape ostatniego \ w nawiasach {}
- Nauka i Praca Programisty C++ w III Rzeczy (pospolitej)
Najnowsze wątki
- 2025-05-08 Z jakiego paragrafu podlega ochronie (resortowa) flaga UE w RP3? Bo to nie flaga Obcego PAŃSTWA [KK-137.2]
- 2025-05-08 Usługi, rozliczanie płatności z karty i blika
- 2025-05-08 Lublin => Delphi Programmer <=
- 2025-05-08 Lublin => Programista Delphi <=
- 2025-05-08 Łódź => Mainframe (z/OS, Assembler) Developer <=
- 2025-05-08 Warszawa => Senior Node.js Developer (doświadczenie z framework Nest.
- 2025-05-07 Wielki smog w Watykanie
- 2025-05-07 Polscy czołgiści najlepsi w międzynarodowych zawodach na Łotwie!!!
- 2025-05-07 Znaki wewnętrzne
- 2025-05-07 Czujnik nacisku
- 2025-05-07 Wielki smog w Watykanie Nadal palą węglem w piecach
- 2025-05-07 Kraków => Business Development Manager - Network and Network Security
- 2025-05-07 Białystok => Team Lead Data Engineer (obszar Snowflake) <=
- 2025-05-07 Białystok => Team Lead Data Engineer (Snowflake) <=
- 2025-05-07 Warszawa => IT Recruiter <=