02. december 2002 - 15:11Der er
22 kommentarer og 3 løsninger
Spørgsmål ang. Assembler-sproget
Jeg studerer på Allborg Universitet Esbjerg og er nu ved at afslutte mit kapitel om crackning (vi skriver rapport om Beskyttelse af software). Jeg står på lidt bar bund ang. nogle småting om Assembler:
1). Når man programmer programmer til x86 cpu'en er det så nødvendigt at compile assembler-kildekoden bagefter. Har jeg misforstået noget hvis jeg påstår at det ikke er nødvendigt af kompile?
2). Hvilken forskel er der på det man ser i assembler-kildekoden, og det man får når man disassembler programmet?? Det ligner hinanden en smule dog.
1/ Du skal kompilere din assembler ja, maskinen forstår kun maskinkode (Binært) og din assembler kode er i ascii.
2/ Forskellen er at f.eks dine labels har forskellige navne, i disassembleret kode er det disassembleren, der bestemmer dine labels, i din oprindelige kode er det dig selv.
3/ Jeps, jeg laver en del til f.eks 8051 familien..
1) Man compiler ikke .asm -> .obj - man assembler .asm -> .obj - men det er samme process man kalder det bare noget andet når det er assmbler end når det er et high-level sprog.
2) En god assembler har en del praktiske direktiver, som gør assembler kildeteksten nemmere at læse og vedligeholde. Disassmbler er helt råt.
3) Meget lidt. Men jeg tror stadig at der er enkelte steder.
1) Kildekoden skal via en assembler ( svarer til andre sprogs Compiler ) for at blive checket, og linket sammen med anden code for at kunne behandes af en 'loader' der kan anbringe koden et passende sted i lageret, og starte udførelsen.
2) Alle kommentarerne mangler f.ex. !!!
3) F. ex af folk der skriver drivere til hardware, der kan kobles på.
Jo, assembler bruges da af storset alle compilere ;-)
Og jeg har da af og til også fingrene i assembler koden, men dog mest for at verificere om compileren har lavet fejl. Det sker også at man må debugge sig igennem et stykke assembler.
Man kan også blive nødt til selv at skrive funktioner som memcpy i assembler, når der er fejl i libraryet. Specielt hvis man arbejder med embedded software.
Og endelig, hvis du interesserer dig for compilere og program optimering, så er assembler lige sagen. De compilere man lærer at skrive på skolerne er jo ikke meget bevendt, da de allesammen bruger C som mellemkode.
Men mine kolleger står som regel af når jeg tager assemblerbøgerne frem.
flarup> Dvs. at hvis man synes assembler-sproget lyder spændende, så er det ikke blot tidsspilde at gå igang med?? Hvilken form for assembler-sprog skal jeg starte med? Hvad med HLA (high-level-assembler) eller MASM32 - er det noget jeg kan bruge senere?
Nu skal jeg jo ikke lokke dig i fordærv! Jobmulighederne hænger ikke just på træerne blot fordi man kan assembler. Det vigtigste er at du ender op med mindst en kandidat grad. Hvor jeg er ansat har de fleste bit pillere en kandidat uddannelse. At du har valgt den udvidede bitpiller linie vil så kunne overbevise dine kommende arbejdsgivere om at her kommer en person der ikke er bange for at tage fat i de tungere og mere grundlæggende grene af datalogien. Det er jo langt fra sikkert at du kommer til at arbejde med det du har skrevet projekter om. Men det er ikke lige en profil der stiler mod et direktør job, nærmere som teknisk ekspert men der mener jeg nu også er sjovere.
Problemet er blot at der vil blive færre og færre af den slags jobs, i takt med at software udvikling bliver mere og mere komponent baseret. Men der skal jo også nogen til at lave både nye komponenter og compilere. Det er bare ikke sikkert at det er i Danmark, men det er jo blot et spørgsmål om geografi.
flarup og arne_v > Tak for den brugbare info. Dog bør jeg nok pointere at jeg startede på universitet i september i år, så det er begrænset hvor meget jeg ved om tingende endnu. Men jeg synes at assembler-kode virker spændende, men min hovedvejleder mener nu nok at det ville være lidt tidsspilde (han underviser i C++). Selvfølgelig har jeg tænkt mig at fokuserere på c/c++ også. Men jeg interesserer mig faktisk for de grundlæggende begreber i en computer, og derfor bærer mit P1 projekt nok også præg af det.
Men indtil videre regner jeg med at fortsætte alle 5 år og stå færdig som civilingeniør. Men specialet ligger jo alligevel et par år ude i fremtiden :)
Men assembler er altså ikke dødens pølse endnu, men hvad så efter 2007??
PS: Hvad med .NET - det er der vel også udfordring i??
Der er udfordring i alt. Da jeg studerede fik jeg at vide at hvert 10. år ville jeg totalt havde udskiftet den værktøjskasse, altså sprog og programmer, som jeg bruger til mit arbejde. Med C++ som den mest markante undtagelse kom dette til at holde stik.
Det jeg har med fra universitetet er den grundlæggende teori, for den ændrer sig ikke lige sådan. Så jeg kan kun ønske dig held og lykke med dit studium.
Assembler sproget er da meget sjovt, men jeg vil kun råde dig til at gøre det fordi at du syntes at det kunne være skægt at lære. I industrien bliver det da brugt, man bruger det til mange kredse, dog kan man som regel også skrive koden i C sproget. Man plejer at skrive koden i et "main" program for derefter at konvertere koden til hex, dernæst bliver det kodet ned i en IC via. et andet program, som sender signalerne ud fra computerens com, usb eller parallelport til selve programmerings hardwaren.
Dette spørgsmål blev skrevet dec 2002 da jeg gik på 1. semester. Jeg går nu på 5 semester og har siden lært utrolig meget om C, C++, Java, og sågar også assembler. Faktisk sidder jeg i øjeblikket og programmerer en microcontroller (TI MSP430) ved brug af C.
Synes du stadig assembler er sjovt? Da jeg läste var der ikke én eneste i klassen (ca 30 stk) der synes det sjovt, tvärtimod :D Det var bare en del af uddannelsen der skulle overstås.
Assembler har ikke været obligatorisk for mig endnu :) Men jeg tror faktisk jeg vil kunne lide det - men måske ikke :)
Det er egentligt sjovt at se sine gamle eksperten-spørgsmål igen - giver et billede af hvor meget man egentlig lærer igennem årene på en længerevarende uddannelse. At sige at jeg kan programmere assembler ville være at overdrive. Men jeg føler at jeg har fået en god forståelse for hvad assembler er og hvor langt væk der er til C sproget (som jeg efterhånden kender ret godt).
Min C og assembler erfaring stammer hovedsagelig fra programmering af microcontrolleren MSP430 de sidste 2 semestre. Ang. assembler kigger jeg lidt i manualen for at se hvad MSP'en understøtter af instruktioner. Herefter tjekker jeg hvad C-kompileren egentlig får ud af min kode. Ret interessant at se forskellen i assembler bagefter (jeg kan debugge assembler-instruktionerne i realtime).
Men hvor lærer man meget på 2 år indenfor denne branche! Og der er 2 1/2 år tilbage endnu :)
Ja jeg elsker at skrive kode....Men jeg er også lidt af en rendyrket nørd :) Det sjove er når man får en ide, og så man realiserer den ud fra ens teoretiske viden. Jeg er i øjeblikket igang med at lave en dot matrix driver. Så jeg er i fuld sving med at lave det således at den kan skrive alle tegn fra A-Å samt 1-9. Så når jeg har lavet det vil jeg kunne skrive alt på nogle matrix segmenter. Hvad skal jeg så bruge det til? tænker du sikkert... Simpelt nok! at give mig et visuelt billede at de projekter jeg kommer til at lave i fremtiden. Så hvis jeg vil lave en temperatur styring, kunne jeg sætte dette kredsløb i sammenhæng med, for derefter at vise f.eks. teksten "Temperatur 35 grader". Det skal dog siges at jeg lave alt dette på hobby basis, da vi har ingeniører i virksomheden til at lave disse ting... jeg er bare elektronik tekniker, som elsker sit arbejde :)
Super, hvis man nu gerne vil lave et operativ system, eller noget i den stil, hvordan får man så sin C kode kompilet så man ex. kan smide det ned på en diskette og boote fra den?
Her snakker jeg om hvilke programmer der bruges, ikke hvilken viden indenfor C.
Ja jeg er stadig herinde i ny og næ. Jeg bliver færdig med mit afgangsprojekt på universitetet til Juni. Jeg beskæftiger mig med 3D computer vision og overvejer at fortsætte med en erhvervsphd. Finder forskning ret interessant.
Utrolig som ens gamle spørgsmål kan opfriske fortiden :) Dengang forstod jeg ærlig talt ikke særlig meget om assembly eller programmering generelt. Siden har jeg dog fået en solid erfaring i mange forskellige sprog, software-udviklings principper, samt problemløsnings-værktøjer såsom matlab og mathematica. Hehe, jeg gik på 1. semester da jeg skrev dette spm. :) Tiden går.
Intel4004
Synes godt om
Ny brugerNybegynder
Din løsning...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.