logo elektroda
logo elektroda
X
logo elektroda
Adblock/uBlockOrigin/AdGuard mogą powodować znikanie niektórych postów z powodu nowej reguły.

[BASCOM i AVR] Przyspieszenie Set i Reset w ASM

TomekMus 03 Sty 2011 01:06 1583 8
  • #1 8950259
    TomekMus
    Poziom 17  
    Witam,

    Używam Bascoma i potrzebuje go użyć jako zegara dla ukłądu zewnętrznego poprzez zastosowanie prostych komend:


    
    Config PINC.1 = Output
    Clk Alias PORTC.1
    
    DIM X As Word
    
    For X = 1 to ...
      Set CLK
      Reset CLK
    Next X


    Czy idzie maksymalnie przeyspieszyć set i reset poprzez wpisanie tego jako ASM?

    Chodzi mi tu o wyciśnięcie z kodu "siódme poty", nie patrząc na zegar uC
  • Pomocny post
    #2 8950441
    mirekk36
    Poziom 42  
    Pewnie, że można toż SET CLK czy Reset CLK można zamienić w Bascomie wprost na pojedyncze rozkazy asm. To jest jedyna i najlepsza droga przyśpieszania ale też zmniejszania objętości kodu Bascoma. Jednak:

    1. sama zamiana tylko tych 2 poleceń za dużo nie da, przydałoby się całą pętlę FOR jako wstawkę asm napisać co nie jest dużym wyzwaniem przecież

    2. jak tylko zaczniesz używać asm w bascomie to szybko zobaczysz, że można z niego dużo wycisnąć jeszcze ale też zobaczysz, że zbliża się koniec możliwości programowania w języku wyższego rzędu a zaczyna się niskopoziomowe pisanie w asm, co znacznie wydłuża sprawdzanie, testowanie i uruchamianie własnych projektów. Od takiego moemntu to każdy już wtedy zaczyna bliżej przyglądać się językowi C.
  • Pomocny post
    #3 8950988
    piotrva
    VIP Zasłużony dla elektroda
    skoro ma to być zegar, to po co używać pętli for?
    Zastąp ją lepiej pętlą nieskończoną typu do...loop lub jej asemblerowym odpowiednikiem
  • #4 8954816
    TomekMus
    Poziom 17  
    Mirekk36

    Czy stosowanie jezyka C daje coś fizycznie - i dlaczego skoro tak i tak rzechodzi to przez kompilator jak i Bascom
  • #5 8955143
    mirekk36
    Poziom 42  
    Zastosowanie języka C daje przede wszystkim programiście ogromną wygodę i elastyczność jeśli chodzi o programowanie. To jest gigantyczna różnica a nie kwestia tylko kompilatora.

    Weź pod uwagę chociaż tak prostą rzecz jak to co na pewno i tobie już przeszkodziło nie raz w Bascomie, czyli dokonanie kilku obliczeń w tej samej linii np:

    a = ((b*c)+(d/2))-1

    spróbuj sobie to rozpisać w Bascomie, to co w języku C zapiszesz bez zmrużenia oka w sposób naturalny tak jak powyżej. A przy już choćby takiej okazji daje to fizyczną oszczędność na wielkości wygenerowanego kodu.

    I nie oznacza to, że zaletą C w tym przypadku jest możliwość pisania strasznie długaśnych obliczeń w jednej linii.

    Zresztą takich przykładów, że pisanie programów w C daje coś fizycznie jak piszesz, jest cała masa i ciężko ich choćby 10% wymienić tak jednym tchem w kilku nawet zdaniach.
  • #6 8956914
    asembler
    Poziom 32  
    mirekk36 napisał:
    2. jak tylko zaczniesz używać asm w bascomie to szybko zobaczysz, że można z niego dużo wycisnąć jeszcze ale też zobaczysz, że zbliża się koniec możliwości programowania w języku wyższego rzędu a zaczyna się niskopoziomowe pisanie w asm, co znacznie wydłuża sprawdzanie, testowanie i uruchamianie własnych projektów. Od takiego moemntu to każdy już wtedy zaczyna bliżej przyglądać się językowi C.

    Przyglądam się i przyglądam i nie widze :)
    Do 16kB w asm czyli ponad 64kB w C nie widzie różnic szcególnie w zastosowaniach komercyjno nisko ekonomicznych/
  • #7 8956940
    mirekk36
    Poziom 42  
    asembler napisał:
    Przyglądam się i przyglądam i nie widze :)
    Do 16kB w asm czyli ponad 64kB w C nie widzie różnic szcególnie w zastosowaniach komercyjno nisko ekonomicznych/


    To, że ty ich nie widzisz, nie oznacza, że ich nie ma ;) (a przy okazji co miało znaczyć te 16kB czy 64kB ? bo nie za bardzo rozumiem?)
  • #8 8956987
    asembler
    Poziom 32  
    Nic nie miało znaczyć. poprostu zainspirował mnie temat postu z grupy retorycznych jak przyspieszyć? Odpowiedź jedyna zwiększyć "oscylator"
    innego sposoby nie widze. Mirek pewnie zobaczy?
    A reszta mojego poprzedniego postu to SPAM
  • #9 8957340
    mirekk36
    Poziom 42  
    asembler napisał:
    Nic nie miało znaczyć. poprostu zainspirował mnie temat postu z grupy retorycznych jak przyspieszyć? Odpowiedź jedyna zwiększyć "oscylator"
    innego sposoby nie widze. Mirek pewnie zobaczy?


    Nie no szybszego niż wstawka asm w Bascomie i ew zwiększenie dopalacza w postaci większego kwarca - to nie zobaczę ;)
REKLAMA