-
Path: news-archive.icm.edu.pl!news.icm.edu.pl!.POSTED!not-for-mail
From: Piotr <S...@w...pl>
Newsgroups: pl.comp.programming
Subject: Re: prosty assembler
Date: Mon, 13 Oct 2014 17:43:25 +0000 (UTC)
Organization: ICM, Uniwersytet Warszawski
Lines: 46
Message-ID: <m1h2vs$6nv$1@news.icm.edu.pl>
References: <b...@g...com>
<m1ea22$1jb$1@news.icm.edu.pl>
<0...@g...com>
<b...@g...com>
<e...@g...com>
<d...@g...com>
<543c029b$0$18072$65785112@news.neostrada.pl>
NNTP-Posting-Host: user-5-173-12-224.play-internet.pl
Mime-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
X-Trace: news.icm.edu.pl 1413222205 6911 5.173.12.224 (13 Oct 2014 17:43:25 GMT)
X-Complaints-To: u...@n...icm.edu.pl
NNTP-Posting-Date: Mon, 13 Oct 2014 17:43:25 +0000 (UTC)
User-Agent: slrn/1.0.1 (Linux)
Xref: news-archive.icm.edu.pl pl.comp.programming:206757
[ ukryj 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
- 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)
- testy-wyd-sort - Podsumowanie
- Tworzenie Programów Nieuprzywilejowanych Opartych Na Wtyczkach
- Do czego nadaje się QDockWidget z bibl. Qt?
- Bibl. Qt jest sztucznie ograniczona - jest nieprzydatna do celów komercyjnych
- Co sciaga kretynow
- AEiC 2024 - Ada-Europe conference - Deadlines Approaching
- Jakie są dobre zasady programowania programów opartych na wtyczkach?
- sprawdzanie słów kluczowych dot. zła
- Re: W czym sie teraz pisze programy??
- Re: (PDF) Surgical Pathology of Non-neoplastic Gastrointestinal Diseases by Lizhi Zhang
Najnowsze wątki
- 2025-02-05 Re: UK: Michał K. dalej czeka na rozprawę ekstradycyjną w areszcie [bo nie (jeszcze?) zebrał kaucji]
- 2025-02-04 ranking wyciszenia, głośność, hałas przy 130 km/h, na postoju, przy przyspieszaniu
- 2025-02-05 Warszawa => IT Recruiter <=
- 2025-02-05 Ostrów Wielkopolski => Area Sales Manager OZE <=
- 2025-02-05 Rzeszów => Spedytor Międzynarodowy <=
- 2025-02-05 Warszawa => IT Business Analyst <=
- 2025-02-05 Warszawa => Specjalista DevOps <=
- 2025-02-05 Łódź => NodeJS Developer <=
- 2025-02-05 Warszawa => QA Engineer (Quality Assurance) <=
- 2025-02-05 Gdańsk => Specjalista ds. Sprzedaży <=
- 2025-02-05 Warszawa => QA Engineer <=
- 2025-02-05 Warszawa => Programista Full Stack .Net <=
- 2025-02-05 Re: UK: Michał K. dalej czeka na rozprawę ekstradycyjną w areszcie [bo nie (jeszcze?) zebrał kaucji]
- 2025-02-04 podpisywanie umów z datą wsteczną
- 2025-02-04 Radio internetowe do starego Androida