Puzzel Puzzels
Gebruikersavatar
qrnlk
Lorentziaan
Artikelen: 0
Berichten: 5.079
Lid geworden op: vr 14 jul 2006, 14:35

Re: Snel asm leren

Lichtelijk offtopic..

Mijn ervaring is dat men vaak veel te vroeg begint met optimaliseren?

Zo zijn er bijvoorbeeld mensen die al bij de keuze van implementatieplatform (programmeertaal+bibliotheken) zich overmatig druk gaan maken over de runtime snelheid. Wegens gebrek aan daadwerkelijke feiten baseert men zich dan op misleidende "algemene kennis". Toetsbare feiten ontbreken want profiling is onmogelijk zolang er nog geen programma geschreven is (rule #3)

Het gevolg is vaak dat men een taal kiest van een eigenlijk te laag niveau gegeven de complexiteit van het probleem. Waardoor men te veel details moet bijhouden waardoor het programmeren veel moeilijker is en het veel langer duurt om iets te maken of te veranderen, terwijl de kans op fouten significant toeneemt en daarmee ook de tijd die men besteed aan debuggen.

Door dat het verkrijgen van een werkend programma zo veel inspanning kost zal men niet snel geneigd zijn tot experimenteel programmeren waarbij men verschillende algoritmen en datastructuren gaat uit te proberen. Dit heeft als consequentie dat men voor de eerste die men kan bedenken kiest en deze gaat men vervolgens optimaliseren, maar het resultaat is meestal langzamer dan wat men met een beter algoritme had kunnen doen. (see also)
Any sufficiently analyzed magic is indistinguishable from science.

Any sufficiently advanced technology is indistinguishable from magic.



There is no theory of protecting content other than keeping secrets – Steve Jobs

ads

Steun Sciencetalk 25 euro PlayStation Store tegoed - PlayStation Kaart (NL)

25 euro PlayStation Store tegoed - PlayStation Kaart (NL)

Bekijk product

Steun Sciencetalk Canon SELPHY QX20 - Mobiele Fotoprinter - Draadloos - Wit

Canon SELPHY QX20 - Mobiele Fotoprinter - Draadloos - Wit

Bekijk product

Steun Sciencetalk Nuvance SD Kaart Lezer - 3 in 1 - Micro SD Kaart - USB naar USB C - 8-Pin - Geschikt voor alle Telefoons, Tablets & Laptops

Nuvance SD Kaart Lezer - 3 in 1 - Micro SD Kaart - USB naar USB C - 8-Pin - Geschikt voor alle Telefoons, Tablets & Laptops

Bekijk product

virtlink
Artikelen: 0
Berichten: 158
Lid geworden op: di 21 mar 2006, 18:44

Re: Snel asm leren

Rogier schreef:Hier:

Code: Selecteer alles

#include <conio.h>

char c = _getch();
Verschil is alleen dat die van mij ook werkt op een Mac, Playstation, PDA, en straks ook op nieuwe PCs waarvan de CPU alleen nog maar 64bit Asm slikt ;)
Ten eerste werkt dat echt niet op je Mac of Playstation. Ten tweede hoop ik toch echt dat je zelf ook weet dat dat geen correct antwoord is op mijn vraag (met als belangrijkste reden dat _getch() geen demonstratie is van de functionaliteit van C als programmeertaal). Maar mocht je dat toch niet weten, dan denk je blijkbaar dat de C library ook helemaal in C is geschreven zeker. En die DOS header die je aanhaalt idem.

Het is onmogelijk om een besturingssysteem, drivers, of ander low level stuff te programmeren zonder een taal die low-level genoeg is dat het bepaalde processor instructies kan genereren, zoals asm. C is niet low-level genoeg, je kan er geen I/O ports mee aanspreken, je kan er geen interrupts mee genereren, je kan er geen descriptor tables mee instellen, je kan er geen rauwe bytes (die direct op de gewenste plaats in het binaire bestand terecht komen) mee genereren, je kan er geen boot sector van een floppy mee maken (alleen al omdat je geen controle hebt over waar welke bytes terecht komen), ...

En ik heb het dan over C als programmeertaal, zoals we het ook hebben over asm als programmeertaal, en niet over de C libraries of andere implementaties die achter de schermen alsnog asm gebruiken (omdat het gewoon niet kan in C).

En ja, andersom kan wel. Je kan waarschijnlijk zelfs een emulator schrijven in Haskell of F#, al zou ik het niet aanraden. Maar daar hadden we het niet over.
"Niet gehinderd door enige kennis van zaken..."
Scispace Scispace

Scispace is dé ai voor wetenschappers en onderzoekers. Ga naar SciSpace en profiteer van één van de beste ai's.

Scispace

Bert F
Artikelen: 0
Berichten: 2.589
Lid geworden op: vr 15 aug 2003, 20:37

Re: Snel asm leren

Als je echt iets leuks wil maken, moet je eens kijken naar antlr: http://www.antlr.org/ hiermee kun je je eigen vertaler maken voor een zelf te maken programmeertaal. Hiermee kun je dan ook een codegenerator maken voor bijvoorbeeld ia 32.


Wat bedoel je met een codegenerator voor ia32 een compiler of een os? Groeten.
Gebruikersavatar
qrnlk
Lorentziaan
Artikelen: 0
Berichten: 5.079
Lid geworden op: vr 14 jul 2006, 14:35

Re: Snel asm leren

Het is onmogelijk om een besturingssysteem, drivers, of ander low level stuff te programmeren zonder een taal die low-level genoeg is dat het bepaalde processor instructies kan genereren, zoals asm.
Of er moet al een goede systeem API zijn waardoor je de kernel kunt vragen om dit te doen... of wellicht zoiets als een IO kit waar je dan een plugin voor kunt schrijven.
C is niet low-level genoeg, je kan er geen I/O ports mee aanspreken, je kan er geen interrupts mee genereren, je kan er geen descriptor tables mee instellen, je kan er geen rauwe bytes (die direct op de gewenste plaats in het binaire bestand terecht komen) mee genereren, je kan er geen boot sector van een floppy mee maken (alleen al omdat je geen controle hebt over waar welke bytes terecht komen), ...
Je hebt gelijk mbt het schrijven van een OS (aka kernel) maar voor device drivers... ik weet het niet. Ik zou van een beetje redelijk OS verwachten dat er API's zijn voor elk van deze dingen of iets dat hetzelfde gewenste effect heeft zodat jouw code in user-space kan blijven en niet kernel-space vervuild.
En ik heb het dan over C als programmeertaal, zoals we het ook hebben over asm als programmeertaal, en niet over de C libraries of andere implementaties die achter de schermen alsnog asm gebruiken (omdat het gewoon niet kan in C).
Nou... ik heb wel eens inline asm in C en Common Lisp gezien.
Any sufficiently analyzed magic is indistinguishable from science.

Any sufficiently advanced technology is indistinguishable from magic.



There is no theory of protecting content other than keeping secrets – Steve Jobs
Kaspace
Artikelen: 0
Berichten: 207
Lid geworden op: za 30 mei 2009, 11:02

Re: Snel asm leren

Hmm kweet niet wat voor soort assembler je wilt leren. Als het voor een Intel PC is dan lijkt me dat niet erg zinvol.

De software voor PC is behoorlijk goed uitgekiend, zeker voor die delen die je met ASM zou willen aanpakken.

Zelfs voor microcontrollers is de trend naar C. Het heeft te maken met de programmagrootte. Om 10kByte vol te krijgen in machinetaal moet je flink wat programmeren in assembler... En tegenwoordig is 64, of 256kB al heel normaal. Om dat te hanteren MOET je haast wel C gebruiken.

Assembler gebruik je vooral bij het aan elkaar knopen van hardware gewoon definieren welk draadje aan welke pen, de penfunctie instellen.

Ik hobby wat met AVR procesors van Atmel, ongeveer even populair zijn de PICs van Microchip. Dat is spul waarbij je leuk met assembler kan spelen en helemaal je eigen dingetjes kan maken.

Als je wilt weten wat het is: het kan gratis!

1.

http://www.atmel.com/dyn/products/tools.asp?family_id=607

Download AVRstudio 4. Die je moet tegenwoordig wel ff registreren voor de nieuwste versies: je moet daarbij kiezen om minimaal 1000 componenten binnen 1 jaar nodig denken te hebben... is geheel risicoloos, don't worry.

Dat is een complete omgeving om elke processor van Atmel mee te programmeren en te simuleren. Eigenlijk hoef je geen hardware te kopen!

Programmeren gaat òf met assembler (zit in AVRstudio geïntegreerd), òf met WinAVR (dat is GCC+AVRlibrary), GCC is de GNU C-compiler (die wordt bijna overal voor gebruikt: het is zo'n beetje DE standaard).

Maar....ook met C zal je wel in de details (instructieset+codes) van de processorfamilie moeten verdiepen.

2:

Bijvoorbeeld ATmega8515 is (was) heel populair. Dit handboek heb je dan nodig:

http://www.atmel.com/dyn/resources/prod_do...nts/doc2502.pdf

3:

En de instructieset AVR: http://www.atmel.com/dyn/resources/prod_do...nts/doc0856.pdf

Advies: houdt je voorlopig even bij 1 groepssoort (b.v. ATmel AVR 8bit RISC). In die groep vindt je voor "elk" probleem Application Notes met voorbeelden.

Even voor de duidelijkheid: hoewel de trend naar C is meen ik zelf dat Assembler veel leerzamer is. Ik vrees dat je nooit zelf hardware aan elkaar leert knopen zonder ASM kennis. Maar C is zeker geschikt als je een kant en klaar bordje koopt (bv Arduino). Ik gebruik zelf enkel Assembler, gewoon omdat ik C veel te ingewikkeld vindt ivm met libraries, headers, compileropties. Je krijgt veel ballast te verhapstukken om een paar bytes te manipuleren...

Maar als je bijvoorbeeld een grafisch scherm voor een mobile telefoon wilt ontwikkelen, dat moet met C. Meetapparaatjes, tellertjes, instrumentjes, besturingkjes met een paar knopjes dat zou ik allemaal liever in assembler

doen. Een ingewikkeld programma uitvoeren op de PC en via de USB apparaatjes besturen of uitlezen. Dat buitenPC spul is heerlijk te doen met assembler!

Tenslotte nog een tip: als je "hot" stuf wilt kies dan een Xmega, wordt waarschijnlijk de komende jaren de top op 8bit gebied. Hij kan meer dan het huidige 8bit spul maar is dienovereenkomstig ingewikkelder (een pen krijgt steeds meer verschillende rollen om uit te kiezen). Maar als je er nu mee begint kan je die ervaring misschien nog goed te gelde maken ook. Wel denk ik dat je hier met C sneller resultaat uit haalt...
Kaspace
Artikelen: 0
Berichten: 207
Lid geworden op: za 30 mei 2009, 11:02

Re: Snel asm leren

Fantastische site als je AVRassembler wilt leren en toepassingen wilt maken.

http://www.avr-asm-tutorial.net/avr_de/index.html
Kaspace
Artikelen: 0
Berichten: 207
Lid geworden op: za 30 mei 2009, 11:02

Re: Snel asm leren

En op AVR gebied is misschien wel de allersnelste manier om Assembler te leren om dat via Basic te doen!

In wezen is het mengen van machinetaal in Basic niet anders dan in C. Het aardige is dat je bij Basic maar een beperkt aantal libraries hebt (waar wel je haast alle doorsneetoepassingen mee kan maken), zodat het overzichtelijk blijft.

(C libraries mogen nooit "nee" verkopen, dus elke frats zit er in gebouwd: dat nekt je als eigenlijk zocht naar iets eenvoudigs.)

BascomAVR is wereldvermaard en het is zowaar een Nederlands product.

Ook dit kan je gratis gebruiken (ik meen tot maximaal 4kByte programma)

http://www.mcselec.com/index.php?page=shop...op&Itemid=1

ads

Steun Sciencetalk Voor Positiviteit - Scheurkalender 2026 - Elke dag positieve energie - positieve spreuken

Voor Positiviteit - Scheurkalender 2026 - Elke dag positieve energie - positieve spreuken

Bekijk product

Steun Sciencetalk STABILO Power - Viltstift - Tot 8 Weken Zonder Dop - Etui Met 30 Kleuren

STABILO Power - Viltstift - Tot 8 Weken Zonder Dop - Etui Met 30 Kleuren

Bekijk product

Steun Sciencetalk Loesje scheurkalender - 2026

Loesje scheurkalender - 2026

Bekijk product

Maggy
Artikelen: 0
Berichten: 185
Lid geworden op: wo 27 feb 2008, 19:15

Re: Snel asm leren

Ik ken programmeurs die met Qbasic zijn begonnen, probleemloos overstappen naar ANSI C, dan Python in een dagje oppikken, Ruby on Rails ook wel handig vinden, wat in ARM ASM op hun PDA schrijven, natuurlijk Intel x86 Asm niet links kunnen laten liggen en ook nog wat robotjes bouwen waarvoor ze de controllertjes dan ook nog's in van alles door elkaar aansturen.

Daar ben ik heel jaloers op. Ik kan hele simpele dingen in MASM, ANSI C, Python en overstappen van de een op de ander vind ik elke keer weer lastig. Tenzij je al van jezelf weet dat je zo'n duizendpoot bent, raad ik je aan je voorlopig te beperken tot 1 Asm.

Al zijn microcontrollers wel heel leuke dingen...

Plaats een reactie

Je mail wordt niet openbaar getoond. Het wordt enkel gebruik voor contact of notificatie vanuit het beheer.

🗨️ Wat vind jij? Stel direct je vraag of geef je mening – zonder registratie. Je reactie zet het topic weer bovenaan bij 'Laatste posts' en trekt snel nieuwe reacties aan🔥. Mocht je als vaste bezoeker willen reageren, dan kun je je ook registreren.

Bevestig dat je geen robot bent door de volgende vragen te beantwoorden.

Noor heeft 10 knikkers. Ze verliest er 4 in het gras. Hoeveel heeft ze er nog?

Antwoord: (vul een getal in)

Er zitten 5 vogels op een hek. Twee vliegen weg. Hoeveel blijven er zitten?

Antwoord: (vul een getal in)

Terug naar “Informatica en programmeren”

Sciencetalk: Leer, deel of groei. Volg of geef een cursus op Sciencetalk!