W tym memie mnie jedno zastanawia zawsze jak go widzę; czy programy napisane w asemblerze nie są przypadkiem niezdatne do uruchomienia na innych architekturach wbrew temu co sugeruje mem? #gry #assembler
#assembler najlepsze najnowsze
Lepsza składnia assemblera
- AT&T (13)
- Intel (21)
Poza samą znajomością języka, jaką wiedze trzeba posiadać, żeby se tworzyć jakieś proste biblioteki do c++ w #assembler ?
#programista15k
#programista15k
w x32dbg probuje ustawic conditional breakpoint gdy ST(5) == 0. niestety zarowno przy wpisywaniu warunku "st5==0" jak i "@st5==0" breakpoint zalacza sie niezaleznie od wartosci ST(5) a w dzienniku wyswietla sie "Error when evaluating break condition.". ktos wie co moge robic zle?
#assembly #assembler #reverseengineering
#assembly #assembler #reverseengineering
@Przegrywzyciowy0: w jezyku nerdow
@klamkaodokna nie wiem, nie znam się. Kombinuj z różna semantyka.
https://reverseengineering.stackexchange.com/questions/22599/x64dbg-break-when-a-register-contains-a-value
Po za tym to chyba 128 bitowy rejestr i nie porównasz go sobie od ręki z liczba - ale nie znam sie
https://reverseengineering.stackexchange.com/questions/22599/x64dbg-break-when-a-register-contains-a-value
Po za tym to chyba 128 bitowy rejestr i nie porównasz go sobie od ręki z liczba - ale nie znam sie
Pierwszy raz nie mieszczę się w limicie pamięci i muszę stawać na głowie by optymalizować co się da pod kątem ilości kodu maszynowego, nie performance i czytelności. Każdą funkcję czytam w Disassembly Listing i zmniejszam co się da
#programowanie #mikrokontrolery #c #assembler #microchip #mplab
#programowanie #mikrokontrolery #c #assembler #microchip #mplab
@marcus777: próbowałeś
Jak twój kompilator nie ogarnia
-Oz i -fwhole-program? Optimizer ma duże większe pole do popisu, jeśli widzi wszystko. Oczywiście jak masz jeden plik .c w projekcie to nie ma to sensuJak twój kompilator nie ogarnia
-fwhole-program to zawsze możesz dać wszystkie funkcje w jeden plik, tylko trzeba pamiętać o tym, żeby funkcje były static przez co kompilator nie musi zakładać, że funkcja musi powstać i może ją np. zinlinować@Saly: Heh, nie w Microchipie to:
@zetisdead: Projekt własny więc nie będzie takich który by chcieli, ale i tak komercja więc więcej to w kolejnej rev
@To_ja_moze_pozamiatam tinyAVR® 1-series, MPLAB-X
main.c:1:0: warning: Compiler option (Optimize for size) ignored because this feature requires the MPLAB XC8 PRO compilerWszystko co da się na darmowej licencji powłączane
@zetisdead: Projekt własny więc nie będzie takich który by chcieli, ale i tak komercja więc więcej to w kolejnej rev
@To_ja_moze_pozamiatam tinyAVR® 1-series, MPLAB-X
Do jakich zastosowan dzis jest Assembler? Bo słyszałem, że do programowania mikrokontrolerów i do hackingu.
Ale raczej pracy po tym nie ma? (traktuje to jako ciekawostkę). #naukaprogramowania #programowanie #assembler #komputery #hardware
Ale raczej pracy po tym nie ma? (traktuje to jako ciekawostkę). #naukaprogramowania #programowanie #assembler #komputery #hardware
@jakismadrynickpolacinsku: sterowniki się w tym pisze to bardzo niskopoziomowe programowanie
@jakismadrynickpolacinsku: kompresja/dekompresja, przetwarzanie obrazów /video, kryptografia, uczenie maszynowe, systemy baz danych. Nikt nie pisze oczywiście wszystkiego w assembly, ale to są tradycyjnie dziedziny gdzie trzeba bardzo dobrze rozumieć co się dzieje na poziomie sprzętu i assembler służy do optymalizacji niskopoziomowych.
W końcu udało mi się wyświetlić hello world ( ͡° ͜ʖ ͡°)
https://github.com/Mati365/ts-c-compiler
#programowanie #chwalesie #assembler
https://github.com/Mati365/ts-c-compiler
#programowanie #chwalesie #assembler
@Mati365: asm() w pętli w C w typescript w przeglądarce w czymś to wygląda jak emulator x86 w js?
@assninja: Tak, zamierzam odpalić w tym dosa i w nim silnik JSa. Ogólnie pisanie kompilatora C w JSie nie jest wcale takie głupie - pisanie backendu do takiego kompilatora pod jakąś magiczną architekturę jest o niebo prostsze niż rzeźbienie z LLVM. Ofc kosztem jakości wygenerowanego kodu.
Rzeźbię kompilator (z prymitywnym IRem oraz optymalizacjami) i assembler C w TypeScript. Może kogoś to zainteresuje.
GH: https://github.com/Mati365/ts-c-compiler
#programowanie #assembler #kompilatory
GH: https://github.com/Mati365/ts-c-compiler
#programowanie #assembler #kompilatory
Mirki znacie jakieś polskie lub angielskie źródła o x86-64 Assembly?
Szukam jakiegoś info dokładnie do czego są poszczególne rejestry rax, rbx, rcx itp i jakoś nie mogę trafić
#assembler #programowanie #it
Szukam jakiegoś info dokładnie do czego są poszczególne rejestry rax, rbx, rcx itp i jakoś nie mogę trafić
#assembler #programowanie #it
Siema, szukam kogoś komu nie straszny assembler i chciałby pomóc mi z zadaniem i ewentualnie wytłumaczył co i jak. Zadanie na poziomie podstawowym.
#programowanie #asembler #assembler #cpp #c #embedded #hardware
#programowanie #asembler #assembler #cpp #c #embedded #hardware
@tomekszz: pisz zadaanie
Nie ogarniam tego #assembler
Macie jakieś dobre tutoriale do tego?
Chodzi konkretnie o MIPS.
#it #informatyka #programowanie #programista15k
Macie jakieś dobre tutoriale do tego?
Chodzi konkretnie o MIPS.
#it #informatyka #programowanie #programista15k
Trafi się może jakiś Mirek programista znający assemblera i z doświadczeniem w programowaniu mikrokontrolerow (infeon c166). Mam kod, jedynie potrzebowałbym pomocy w zrozumieniu jego działania.
#assembler
#elektronika
#assembler
#elektronika
@PlytaGnojowa: wklei i nie czaj się. C166 to straszny antyk, ale to nie komputer kwantowy, żeby był z tym problem.
Lista instrukcji: https://www.keil.com/dd/docs/datashts/infineon/c166ism.pdf
Lista instrukcji: https://www.keil.com/dd/docs/datashts/infineon/c166ism.pdf
@PlytaGnojowa:
Flagi warunków masz na stronie 38 w pdf:
cc\_UC - skok bezwarunkowy
cc\_z - skok gdy jest ustawiona flaga Z w rejestrze stanu PSW
Flagi są ustawiana przez instrukcje testujące, arytmetyczne.
Zwróć uwagę, że przez skokami warunkowymi masz w programie np. cmp
cmp dpp0, #0x38 - ustawia flagi w PSW
jmpr cc\_z, func4 - wykonuje skok gdy jest ustawiona flaga Z
Flagi warunków masz na stronie 38 w pdf:
cc\_UC - skok bezwarunkowy
cc\_z - skok gdy jest ustawiona flaga Z w rejestrze stanu PSW
Flagi są ustawiana przez instrukcje testujące, arytmetyczne.
Zwróć uwagę, że przez skokami warunkowymi masz w programie np. cmp
cmp dpp0, #0x38 - ustawia flagi w PSW
jmpr cc\_z, func4 - wykonuje skok gdy jest ustawiona flaga Z
#programowanie #programista15k #asembler #assembler
Mam w asemblerze za pomocą koprocesora obliczyć y, np. y=1/2*3
Robię to następująco:
Fld1
Fld1
Fld1
Fadd
Fdiv
(Mam 1/2, teraz 3 i mnoże)
Fld1
Fld1
Fadd
Fld1
Fadd
Fmul
To akurat jest prosty przykład, mam trudniejsze i czy jest możliwość żeby zrobić jakiś program w asemblerze który będzie mi liczył, sprawdzał czy dobrze zrobiłem te instrukcje na koprocesorze?
Mam w asemblerze za pomocą koprocesora obliczyć y, np. y=1/2*3
Robię to następująco:
Fld1
Fld1
Fld1
Fadd
Fdiv
(Mam 1/2, teraz 3 i mnoże)
Fld1
Fld1
Fadd
Fld1
Fadd
Fmul
To akurat jest prosty przykład, mam trudniejsze i czy jest możliwość żeby zrobić jakiś program w asemblerze który będzie mi liczył, sprawdzał czy dobrze zrobiłem te instrukcje na koprocesorze?
@mateusz-zahorski: musisz przede wszystkim powiedzieć, jaki to asembler. Po drugie najlepiej, żebyś napisał sobie po prostu kod, który ci wyświetli wynik. Ale żeby to zrobić, to musisz wiedzieć, co to za asembler XD
@maisterwihaister: x86 :I
Assembler x86(-64) Tutorial cz. 2 - Rejestry Procesora -> https://techniczniej.pl/post/assembler-x86-64-tutorial-cz-2-rejestry-procesora
Rejestry ogólnego i specjlanego przeznaczenia + Darmowy fragment książki!
Po przeczytaniu dowiesz się:
- Czym są rejestry ogólnego przeznaczenia w assemblerze
- Jakie przeznaczenie mają poszczególne rejestry
- Czym są rejestry segmentowe
- Czym jest rejestr flag i czemu on służy
#programowanie #programista15k #naukaprogramowania #assembler #informatyka #it
Rejestry ogólnego i specjlanego przeznaczenia + Darmowy fragment książki!
Po przeczytaniu dowiesz się:
- Czym są rejestry ogólnego przeznaczenia w assemblerze
- Jakie przeznaczenie mają poszczególne rejestry
- Czym są rejestry segmentowe
- Czym jest rejestr flag i czemu on służy
#programowanie #programista15k #naukaprogramowania #assembler #informatyka #it
#asembler #assembler #programowanie #programista
Dalej walczę z asemblerem, mam to co po lewo a muszę mieć to co po prawo, czy to da się zrobić edytując ten kod czy tu trzeba bufora i procedur?
KOD: https://pastebin.com/jzWb5QRi
Dalej walczę z asemblerem, mam to co po lewo a muszę mieć to co po prawo, czy to da się zrobić edytując ten kod czy tu trzeba bufora i procedur?
KOD: https://pastebin.com/jzWb5QRi
@mateusz-zahorski no dobra, ale jak to ma wyglądać dla n=10? bo po prawej jest dla n=7
Jaka treść zadania wariacie?
Jaka treść zadania wariacie?
@mateusz-zahorski daj treść zadania to pomyślimy, bo jak tylko ma wypluwać różniebl wypelnione kwadraty 7x7 to można to mądrze zrobić
Jak Nauczyłem Się Assemblera - Assembler Wstęp Dla Początkujących -> https://techniczniej.pl/post/assembler-tutorial
- Programowanie Niskopoziomowe
- Czy C/C++ Jest Niskopoziomowe
- Rejestry Procesora
- Pierwszy Kod Assemblera
- Kompilacja Assemblera
#programowanie #programista15k #naukaprogramowania #assembler #it
- Programowanie Niskopoziomowe
- Czy C/C++ Jest Niskopoziomowe
- Rejestry Procesora
- Pierwszy Kod Assemblera
- Kompilacja Assemblera
#programowanie #programista15k #naukaprogramowania #assembler #it
@techniczniej: akurat poczebne ( ͡° ͜ʖ ͡°)
Każdy 64-bitowy procesor posiada rejestry 64-bitowe, które dzielą się na 32-bitowe, te na 16-bitowe, a te na 8-bitowe.
@techniczniej: Nie każdy. Rejestry ARM64 dzielą się co najwyżej na 32-bitowe. I pewnie inne architektury niż x86-64 mają jeszcze inaczej.
Kompilator, z którego będziemy korzystać to NASM.
Nie kompilator, a asembler. Wiadomo, że są to rzeczy dość podobne pojęciowo,
szczególnie jeśli chcemy uprościć tekst, ale może wypadałoby zaznaczyć jaka
jest różnica?
Ogólnie, artykuł wydaje mi się napisany mocno po łebkach i początkującemu zbyt
wiele nie pomoże, bo co mu po tym, że załadował
0 do ebx i 1 do eax?
Nie ma wytłumaczenia, dlaczego tak się dzieje, i że jest to powiązane z konwencją
wywołań, która dla każdego systemu operacyjnego jest inna.
Operacja elementarna - jest przykładowo operacją porównania dwóch liczb ze sobą.
Czy to tłumaczy, czym jest operacja elementarna? To tylko jakiś jednostkowy
przykład.
Poza tym, z tej sekcji czytelnik może wyciągnąć jakiś pokrętny wniosek, że
skoro
cmp eax, 3 tłumaczy się na 83 F8 03, to cmp=83, a eax=F8.
Nie ma żadnego wytłumaczenia, dlaczego operacja elementarna składa się z
3 bajtów. Czy każda operacja składa się w takim razie z 3 bajtów?
Biorąc pod uwagę to, że artykuł jest poniekąd w zamierzeniu
zachętą do zakupienia książki za 100 zł, to wypadałoby chociaż zaprezentować
gdzieś przykładowy rozdział z tej książki i spis treści.
#programowanie #asembler #assembler #programista15k
Czy jest tu ktoś kto potrafi zrobić w assemblerze jakieś proste rzeczy typu litera K z gwiazdek? Poziom studiów, albo jakieś trójkąty, proste figury
Czy jest tu ktoś kto potrafi zrobić w assemblerze jakieś proste rzeczy typu litera K z gwiazdek? Poziom studiów, albo jakieś trójkąty, proste figury
@mateusz-zahorski: spokojnie, od początku. Jaki to jest asembler? Jakie dokładnie jest zadanie? Czego oczekujesz - pomocy w samodzielnym rozwiązaniu czy gotowca? Bo gotowiec to kosztuje pieniądze
@mateusz-zahorski: no ew. pomyłka to nauka 16-bitowego asm w 2022 roku xD ale cóż
Mireczki, dostałem zadanie z #assembler na zasadzie:
Jeśli przycisk dołączony do linii PA1 jest wciśnięty, to dioda nie świeci, jeśli nie jest to PA0 świeci. No dobra, z racji że assemblera nigdy nie miałem, to odpaliłem sobie dokumentacje, schemat do ATMEGA32 i klikam po kolei, sprawdzam jak to wygląda. No i coś tu mi się nie podoba, bo według schematu atmega ma 8 pinów PA, a w zadaniu dostałem 8 lampek led (na wszystkich liniach PA) i przycisk podłączony do tego samego pina co LED1.
Gdy próbuję sobie porównać bit na PA1 w momencie przyciskania (za pomocą polecenia SBIS i jmp do funkcji), to w sumie nic się nie dzieje, tylko zapala LED1. Może ktoś rzucić okiem o co tu chodzi i czy schemat jest dobry? xD
#naukaprogramowania #programowanie #elektronika
Jeśli przycisk dołączony do linii PA1 jest wciśnięty, to dioda nie świeci, jeśli nie jest to PA0 świeci. No dobra, z racji że assemblera nigdy nie miałem, to odpaliłem sobie dokumentacje, schemat do ATMEGA32 i klikam po kolei, sprawdzam jak to wygląda. No i coś tu mi się nie podoba, bo według schematu atmega ma 8 pinów PA, a w zadaniu dostałem 8 lampek led (na wszystkich liniach PA) i przycisk podłączony do tego samego pina co LED1.
Gdy próbuję sobie porównać bit na PA1 w momencie przyciskania (za pomocą polecenia SBIS i jmp do funkcji), to w sumie nic się nie dzieje, tylko zapala LED1. Może ktoś rzucić okiem o co tu chodzi i czy schemat jest dobry? xD
#naukaprogramowania #programowanie #elektronika
@shiningsky: Albo ktoś się rąbnął, albo wymyślił bardzo upierdliwe zadanie ;) Jeśli wersja upierdliwa, to na szybko - w pętli można zaświecać LED na x czasu, potem gasić na kilka ms i w tym czasie badać przycisk, potem zaświecać lub nie w zależności od przycisku - oczywiście po drodze machając DDR i PORT. Odpowiednio krótki czas nieświecenia LEDa nie będzie widoczny okiem (patrz PWM).
według schematu atmega ma 8 pinów PA, a w zadaniu dostałem 8 lampek led (na wszystkich liniach PA) i przycisk podłączony do tego samego pina co LED1.
@shiningsky: pokaż ten schemat
Ile jest warstw i jak działa API Windowsa -> https://techniczniej.pl/post/99-programistow-tego-nie-wie-jak-dziala-api-windowsa
@techniczniej: lol, tak samo jak 99% programistów nie wie jak skonfigurować DMA w STM32, co to za tytuł xD
@ZohanTSW: Tytuł faktycznie nietrafiony. Myślę, że autor użył skrótu myślowego i chodziło mu o programistów Windows. Bzdurą by było wciągnąć do tego worka np webowców albo tak jak wspomniałeś embedded.
Zrobiłem listę 64 różnych języków programowania i w tagu:
#bitwyjezykowe
będziemy sobie je porównywać który lepszy
W lewym narożniku #ada Nazwany na cześć pierwszej programistki, język programowania swego czasu stosowany przez US Army z uwagi na fakt, że jak już się coś skompiluje to ciężko to wysypać w nieprzewidziany sposób
W prawym narożniku #assembler jako grupa języków niskiego poziomu odzwierciedlających to co dzieje się na procesorze.
głosowanie plusami w kometarzach
#bitwyjezykowe
będziemy sobie je porównywać który lepszy
W lewym narożniku #ada Nazwany na cześć pierwszej programistki, język programowania swego czasu stosowany przez US Army z uwagi na fakt, że jak już się coś skompiluje to ciężko to wysypać w nieprzewidziany sposób
W prawym narożniku #assembler jako grupa języków niskiego poziomu odzwierciedlających to co dzieje się na procesorze.
głosowanie plusami w kometarzach
Pracuję jako inżynier w bardzo wąskiej branży w której nie ma rynku pracownika. Jak zaczynałem 15 lat temu to były dobre pieniądze i wsiąkłem, ale przez systematyczny brak podwyżek obecnie się robi straszna lipa + absolutny brak szansy na dalszy rozwój.
Chcę się przebranżowić na #it. Kończę kurs #ccna i będę robił oficjalny świstek #cisco. Linuxa powiedzmy że podstawy znam. Programowałem mikroprocesory w #c oraz w #assembler, generalnie to programowanie dosyć szybko łapie. Formalinie doświadczenia w #it brak.
Czego się jeszcze uczyć, jakie kursy zrobić, żeby mieć szansę na załapanie się na robotę? Widzę #vmware jest teraz w modzie i ogólnie wirtualizacja.
#Warszawa jakby to miało znaczenie.
#ccna #siecikomputerowe #pracait
Chcę się przebranżowić na #it. Kończę kurs #ccna i będę robił oficjalny świstek #cisco. Linuxa powiedzmy że podstawy znam. Programowałem mikroprocesory w #c oraz w #assembler, generalnie to programowanie dosyć szybko łapie. Formalinie doświadczenia w #it brak.
Czego się jeszcze uczyć, jakie kursy zrobić, żeby mieć szansę na załapanie się na robotę? Widzę #vmware jest teraz w modzie i ogólnie wirtualizacja.
#Warszawa jakby to miało znaczenie.
#ccna #siecikomputerowe #pracait
@Zorki4: Zdecyduj sie w co chcesz iśc a nie rób wszystko. Nie bez powodu mówi się, że człowiek który umie wszystko nie umie niczego porządnie.
a co innego jest obecnie wewnątrz sieci korporacyjnej? Właśnie swtche i routery i to tyle xD Jedyna zmiana/uproszczenie to brak własnego on-prem DC na sajtach i to tyle, ale tam też nigdy dużo roboty nie było bo tam ma to działać bo jak nie działa to cała firma leży
@d1sconn3cted: Ciekawa robota jest bardziej związana z DC niż z klepaniem sajtów według jakiegoś standardu ustalonego przez ludzi z architektury/engineeringu. W DC masz multum urządzeń z pogranicza sieci i aplikacji (collaboration, jakieś load balancery, jakieś firewalle)
Korpo przy większych projektach które są związane z wymianą wielu urządzeń na sajtach biorą sobie WIPRO czy inne, gdzie jest dużo, średnio wykwalifikowanej siły roboczej.
#assembler #asembler #x86 #x64 #programowanie #nasm
Mam coś takiego
`hello:
push rbp ; robimy ramkę stosu
mov rbp, rsp
sub rsp, 16 ; stack musi być wyrównany do 16 bajtów w SysV ABI, ofc w tym przykładzie w ogóle nie muszę sobie robić tych 16 bajtów, bo ich nie używam, ale wstawiam, żeby napisać ten komentarz o wyrównaniu stosu :P`
`hello_loop:
mov rdi, hello_fmt
mov rsi, rcx
push rcx ; zapisuję rcx, bo _printf bruździ w rejestrach
push rcx ; a ponieważ stos musi być wyrównany do 16 B to musimy albo zrobić sub rsp, 8 albo dwa razy zrobić push, inaczej dostaniemy segfaulta
call _printf
pop rcx ; przywracam rcx
pop rcx ; wyrównuję stos
loop hello_loop`
` add rsp, 16 ; zwalniamy stos
pop rbp
ret`
`section .data
hello_fmt: db "Hello, %d", 10, 0`
No i wszystko ładnie. Tylko dlaczego to wyrównanie nie tyczy się to pierwszego
Mam coś takiego
`hello:
push rbp ; robimy ramkę stosu
mov rbp, rsp
sub rsp, 16 ; stack musi być wyrównany do 16 bajtów w SysV ABI, ofc w tym przykładzie w ogóle nie muszę sobie robić tych 16 bajtów, bo ich nie używam, ale wstawiam, żeby napisać ten komentarz o wyrównaniu stosu :P`
mov rcx, 10 ; loop counter
`hello_loop:
mov rdi, hello_fmt
mov rsi, rcx
push rcx ; zapisuję rcx, bo _printf bruździ w rejestrach
push rcx ; a ponieważ stos musi być wyrównany do 16 B to musimy albo zrobić sub rsp, 8 albo dwa razy zrobić push, inaczej dostaniemy segfaulta
call _printf
pop rcx ; przywracam rcx
pop rcx ; wyrównuję stos
loop hello_loop`
` add rsp, 16 ; zwalniamy stos
pop rbp
ret`
`section .data
hello_fmt: db "Hello, %d", 10, 0`
No i wszystko ładnie. Tylko dlaczego to wyrównanie nie tyczy się to pierwszego
push rbp? Na początku mamy odjęte 8 (push rbp), potem 16 (sub rsp, 16), potem drugie 16 (podwójny push). To gdzie jest brakujące 8?@zwei chciałbym się nauczyć asemblera, jakie źródła wykorzystujesz do nauki?
Na początku mamy odjęte 8 (push rbp), potem 16 (sub rsp, 16), potem drugie 16 (podwójny push). To gdzie jest brakujące 8?
@zwei: Te 8 bajtów zostanie zajęte przez "return adress" pod który ma wrócic funkcja po wywołaniu. Jest to zazwyczaj odkładane na stosie przez "call" i zdejmowane przez "ret"
#assembler #programowanie #informatyka #programista15k
Hej, stworzyłem kod w assemblerze, dokładniej NASM 64bity na linuxie.
Jak przerobić ten program, żeby liczby od 1 do 9 wypisał za pomocą tablicy ASCII? I jak przerobić później żeby wypisywał same nieparzyste to jest 1 3 5 7 9 ? Męczę się od wczoraj z tym przerabianiem ale nie wychodzi mi.
Kod na pastebin
Hej, stworzyłem kod w assemblerze, dokładniej NASM 64bity na linuxie.
Jak przerobić ten program, żeby liczby od 1 do 9 wypisał za pomocą tablicy ASCII? I jak przerobić później żeby wypisywał same nieparzyste to jest 1 3 5 7 9 ? Męczę się od wczoraj z tym przerabianiem ale nie wychodzi mi.
Kod na pastebin
@harnasiek: uruchom, sprawdz
a zakodowanie 1 i dodawanie po prostu w pętli +2 do 9 włącznie może być?@harnasiek: wg mnie: nie, bo masz wypsywac nieparzyste liczby a nie co druga liczbe (przynajmniej tak napisane w poleceniu)
Strona 1 z 11
Następna →














@placebo_: mem nic takiego nie sugeruje. Mem mówi o takim zoptymalizowaniu, żeby chodziło na słabszych podzespołach - wolniejszym procki, karcie graficznej czy mniejszej ilości ramu.