Gå til innhold

Anbefalte innlegg

Hei.

 

Tenkte jeg skulle begynnte å lære meg assembly, har holdt på med C-programmering en stund, og har interessert meg for assembly lenge, så nå lurte jeg på om noen kan fortelle meg hvilket program jeg kan programere asssembly i, har hørt at man kan bruke notisblokk osv, men føler ikke at det er tingen :p, og bruker man noen form for kompilator, isåfall hvilken anbefales? :)

Lenke til kommentar
Videoannonse
Annonse

Det er flere typer typer eller syntakser om du vil, altså forskjellige språk. Nasm, masm, HLA og GCC inline Assembly. Det blir litt avhengig av hva du har tenkt å lage? På Nasm sine sider står det mye, de har også god dokumentasjon. Masm er vel mer et windows fenomen?

 

Bare så det er sagt, man lager ikke større programmer i Assembly. Det man kan gjøre er at man skriver deler av et større C++ prosjekt i Assembly for å øke ytelsen. Nå skal det også sies at jeg har antatt at du vil lære x86 IA-32 assembly.

Lenke til kommentar

Du må ha en assembler ja, som nasm eller gas for linux f.eks. I windows fins det noen andre, men jeg vet ikke helt hvem. Koden skriver du i en teksteditor. Jeg kan anbefale deg å lære deg enten vim eller emacs, to veldig fleksible og kraftige editorer når du først har lært deg dem, men det tar litt tid før alle kommandoene sitter skikkelig. Men ikke bruk notepad ihvertfall :)

 

Hvis du vil lære deg assembly, low level detaljer om prosessoren, cache, minne, operativsystemet, nettverk, tråder osv og hvordan alt henger sammen anbefaler jeg http://www.amazon.com/Computer-Systems-Pro...t/dp/013034074X denne boken. Den er ikke bare om assembler, men den tar for seg basicen og hvordan man skriver enkle programmer i det. I tillegg er det masse C-kode for de ovennevnte tingene for hvordan man programmerer effektivt med prosessoren og cache og slikt. Ofte er det også assemblerkode av C-koden. Les infoen og reviewesene, kjempebra bok syns jeg.

Lenke til kommentar
  • 5 uker senere...
Bare så det er sagt, man lager ikke større programmer i Assembly. Det man kan gjøre er at man skriver deler av et større C++ prosjekt i Assembly for å øke ytelsen.
Definér "større". Det går da fint å skrive en del megabytes asm-kode, og det kan man gjøre ganske mye "stort" med.
Lenke til kommentar

Hehe, litt diffust utsagn kanskje. Om jeg ikke tar feil er mainloopen til doom3 skrevet i masm, det er noe stort. Jeg tenkte mer i retningen av prosjekter som er basert på klient-server, hvor informasjonsbehandling og informasjonsutveksling over nettet er hovedmomentet. Et eksempel på "stort" er extens, det brukes av skoler og barnehager. Assembly har sitt bruksområdet.

Lenke til kommentar
  • 1 år senere...

Det tar lengre tid å skrive i assembly ja, men hvis man har biblioteker så vil jeg nesten påstå at det går akseptabelt fort å skrive.

 

Men så er det så mange positive sider ved å skrive i assembly også.

Renhet er vel det de fleste setter pris på. Et rent program hvor 90% av det du skriver kommer fra deg i motsetning til et høynivåprogram hvor halvparten eller mer er kodet av andre. Noen av grunnene til at jeg foretrekker å skrive win32asm

 

Mulighet for raskere og mer optimalisert kode

Raskere programstart

Mindre diskbruk

Bedre kontroll og større læringskurve

Forstår høynivåspråk bedre

Slippe å bruke hjelpefiler i utviklingsverktøy, man forholder seg simpelt hen til Win32 programmers reference hjelpefila.

Hver linje med instruksjoner gir mening og man forstår det i motsetning til i høynivåspråk der kan alt mulig skje, man har liten eller ingen kontroll på hvor mye minne man bruker ved den gitte kode, man vet ikke hva som skjer under og man vet i få tilfeller hvem som har laget rutinene.

Lenke til kommentar
Gjest Slettet+9871234

Du finner en rekke ressurser og kildetekst her:

 

http://www.kjellbleivik.com/Books/#assembly

 

Jeg liker selv Emabarcadero (tidligere Borland) C++ Builder der man kan skrive C / C++ kode med inline assembler blokker

 

ASM {assembler instuksjoner her }

 

I tillegg kan man produsere ASM filer før obj filene, så man kan lære en del ved å studere assembler koden som produseres av enkle C programmer som for eksempel løsningene til Kernighan og Ritchie, jfr. andre lenke på ovennevnte link.

Endret av Slettet+9871234
Lenke til kommentar
  • 2 måneder senere...

Hva med å prøve FreeBasic.

 

Du kan bruke FbIde som editor som lar deg kompilere direkte fra editoren.

 

Basic kan alle og er enkelt og forstå samtidig som en kan bruke inline assembler.

 

Gratis og benytter tilnærmet qbasic grensesnitt som jeg er sikker på at de fleste kjenner til :)

 

 

eks:

 

Screen 13,,,1

Common Shared screenmem As Byte Ptr
screenmem = screenptr

Const xmax As Integer = 320
Const ymax As Integer = 200

Declare Function plott (Byval x As Integer, Byval y As Integer, Byval c As Byte)

plott (10,50,15)
plott (15,45,35)

Sleep

'--------------=====<PLOTTER ROUTINE>=====-------------------------
Function plott (Byval x As Integer, Byval y As Integer, Byval c As Byte)
 asm
   mov  eax,xmax
   imul eax,[y]
   add  eax,[x]
   add  eax, dword Ptr [screenmem]
   mov  cl,[c]
   mov  Byte Ptr [eax],cl

 End asm
End Function
'------------=====<PLOTTER ROUTINE END>=====--------------------- 

 

 

Som du ser så er det relativt enkelt å benytte.

 

Men som tidligere nevnt så må du bruke et annet miljø en windows hvis du vil ha tilgang til porter direkte.

Lenke til kommentar
  • 5 måneder senere...

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
  • Hvem er aktive   0 medlemmer

    • Ingen innloggede medlemmer aktive
×
×
  • Opprett ny...