64-bit, 128-bit...

0

Witam,

Mam pytanie dotyczące dużych liczb, otóż jak to jest możliwe, że program skompilowany na 32-bitowe procki potrafi wykonywać operacje na 64-bitowym _int64 (lub jak kto woli long long) i Pascalowym, 80-bitowym Extended'ecie? Jak procesor sobie z tym radzi, i czy np. mając kod źródłowy jakiegoś kompilatora nie można by zmienić trochę (naginajac specyfikację danego języka) dodając zmienne 128-, czy nawet 256-bitowe?

Pozdrawiam.

0
Futhark napisał(a)

Witam,
Mam pytanie dotyczące dużych liczb, otóż jak to jest możliwe, że program skompilowany na 32-bitowe procki potrafi wykonywać operacje na 64-bitowym _int64

Tak samo chyba, jak 16 bitowe aplikacje chodziły na 32 bitowym procku- kompatybilność w dół. Ale nie wydaje mi się, żeby ort! całe rejestry.

0

Nie, nie, chodzi mi o to jak 32-bitowy procesor potrafi wykonywać operacje arytmetyczne na 64-bitowe zmiennej (lub nawet na 80-bitowej).

0

Softwarowo, dlatego ich uzywanie nie jest zalecane z powodow wydajnosci.

0

Odpowiedź jest prosta: potrafi. Tak na prawdę pewne operacje, które historycznie nie były wykonywane przez procesor główny, a jedynie przez np.: kooprocesor matematyczny zostały wchłonięte.

Poza tym CPU posiada liczne operacje o argumentach większych niż 32bit (np.: w MMX czy SSE), ale n-bitowość procesora tak na prawdę jest określona szerokością szyn adresowych, a nie rozmiarami rozkazów i danych, choć pozornie oczywistym niby się wydaje, że pociąga to za sobą szerokość szyn danych, a więc i rozmiary operandów rozkazów.

Wspomniany format 80bitów jest formatem wewnętrznym obliczeń kooprocesora matematycznego - jest robiony sprzętowo.

0
Szczawik napisał(a)

[...]n-bitowość procesora tak na prawdę jest określona szerokością szyn adresowych, a nie rozmiarami rozkazów i danych [...]

WOW to Z80 jest 16 bitowy :D

0

:D Ciekawe spostrzeżenie, ale akurat wg. specyfikacji bostońskiej Z80 jest 16 bitowy, choć może wydaje się to nawet zabawne.. Obecnie tak na prawdę w prockach miesza się tak wiele technologii, że trudno powiedzieć, że całość jest 16, 32, 64 czy więcej bitowa.. To ma po prostu być wydajne i tyle.

A tak a'propos tych szyn adresowych, to chodzi o adresowanie wewnętrzne.. Klasyfikując wg. rozkazów to mikrokomputer 80517 jest 16bitowy, a nawet jego pierwowzór ma rozkazy 16 bitowe (z DPTR, jak ktoś wie o co chodzi).

0

Hmmm Szczawik, jakos przedstawiony przez Ciebie sposob podzialu
uP do mnie nie dociera. Pierwsze slysze zeby "procesor 16 bitowy" byl procesorem o 16 bitowej szynie adresowej czy tez procesorem, w ktorym kod rozkazu wraz z operandami ma 16 bity.

A tak a'propos tych szyn adresowych, to chodzi o adresowanie wewnętrzne.. Klasyfikując wg. rozkazów to mikrokomputer 80517 jest 16bitowy, a nawet jego pierwowzór ma rozkazy 16 bitowe (z DPTR, jak ktoś wie o co chodzi).

Akurat dlugosc DPTR z 'x bitowoscią' ;) procesora nie jest za bardzo związana :>

n-bitowość procesora tak na prawdę jest określona szerokością szyn adresowych, a nie rozmiarami rozkazów i danych, choć pozornie oczywistym niby się wydaje, że pociąga to za sobą szerokość szyn danych, a więc i rozmiary operandów rozkazów.

eeeee oczywistym?

Z moich informacji wynika, ze ALU n-bitowego procesora moze wykonywac operacje sprzetowo na max n bitowych słowach (ew. rozmiar bufora ALU).
Mysle, ze najlepiej przyjmowac taka klasyfikacje.

Chociaz nie jestem pewny patrzac na jezyki programowania jakie znasz:
asm51, asm86, c/c++, pascal, delphi, visual c++, basic, qbasic, vb, java, directx, shellapi, html, javascript, dhtml, php, ole,

Pozdrawiam ;)

// directx w htmlu przez shellapi, zajebiste gry się w tym robi :> - Ł

0

heh
A o operacjach na liczbach stałoprzecinkowych, albo na liczbie w dwóch rejestrach to już nie pamiętacie? ;)
"górna" część liczby jest w jednym rejestrze (mówię o zwykłych, nie FPU) a "dolna" w drugim. Zmieniają się co nieco zasady, na jakich wykonuje się działania matematyczne, ale tak też można :]

0

Co do tej klasyfikacji procków, to tak na prawdę w kółko można się spierać co ile ma bitów, bo obecnie dla zwiększenia szybkości robi się takie hybrydy, że trudno się połapać. A tak a'propos, to jakieś 4 lata temu zajmowałem się projektowaniem prostego uP 12-bitowego (i rozkazy i magistrale 12bit) na potrzeby uczeli, więc temat chyba troszkę znam z własnego doświadczenia..

Co do tego DPTR.. to rzeczywiście zapomniałem, że to dwa osobne rejestry. Za mój błąd biję się w pierś.

:D

Swoją drogą tak mi się przypomniał zabawny błąd kilka miesięcy temu gdzieś tam na WP w dziale z grami zauważony, że PS2 jest najnowszą konsolą z rodziny 8-bit.. he he.

Proponuję zamknąć ten temat. Wyszedł od tego: jak procki mogą wykonywać rozkazy na dłuższych argumentach? Proponuję finalną odpowiedź: mogą, bo tak są budowane. A jak nie mogą, to z odpowiednim programem mogą.. Kropka.

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