Forskellen på assembler og C#

Tags:    c#

<< < 123 > >>
Hej er nybegynder i C# så bær over med mig vis jeg stiller nogle dumme Spørgsmål.

Har programmeret 8 år i assembler og der arbejder man jo med macro og subrutines.

Kan man samme ligne C# og assembler på den måde det er bygge op på, i assembler har man jo main hvor programmet starter fra, når programmet køre kalder det nogle subrutines, macro og springer frem og tilbage i programmet, det gør man vel også i C# på en eller anden måde.

Har købt nogle bøger og undervisning på nette og synes slet ikke der er nogle logik i den måde C# er bygge op på i forhold til assembler.

En af de største problemer jeg har, det er at arbejde frit med variabler/array/memory i hele programmet.

Synes det hele virker menigs løst.

Kan man overhovode samme ligne C# C++ og assembler på nogen måder ?

MVH Nicolas






21 svar postet i denne tråd vises herunder
5 indlæg har modtaget i alt 28 karma
Sorter efter stemmer Sorter efter dato
C++, C og assembly KAN programmeres objekt orienteret, men det behøver man ikke. Et virkelig godt eksempel på objekt orienteret C er glib og gtk bibliotekerne.

Et objekt i assembler ser ud som et objekt i C/C++. Det er en reference til en blok hukommelse med de felter og metoder som udgør objektets tilstand og adfærd.



Vil lige sige 1000 tak for alle jeres svar :-)

Er nu kommet godt i gang med C++ og synes bestemt det miner en hel del om hinanden. Man kan da godt samme ligne Funktioner og subrutiens på en måde. Synes C++ er vildt smart det jeg brugt 100 liner på i assembler kan jeg nu lave i C++ på 10 liner.

Nicolas



hehe...det er vist også meningen, at de skulle være hurtigere og nemmere at udvikle :-)

En funktion i C/C++ bliver af compileren oversat til en subrutine, og hvor du udfører funktionen bliver det oversat til et 'call''.
Det gør member funktioner på C++ objekter også, og referencen til objektet gives så med i et register (ECX/RCX så vidt jeg husker).



Tænkt det nok :-)

Nu kender jeg ikke nogle som programmere men kunne stille 1000 spørgsmål omkring c++

1 hvorfor bruger man ikke global variabler ? i stedet for at låse dem til en funktion er det for at forhindre de skriver i dem ? men man ved vel hvad man sidder og koder.

2 kan man lave en grafisk bruger flade i c++, For har lavet et simpel program, synes det er lidt kikse at man skal køre det igennem Dos eller hvad det er den bruger.

3 Har lavet et program i codeblocks hvorfor skal man download 2 *.dll filer over i system32 for at få det til at køre ? kan det ikke bare ligge i selve programmet ?

4 Har prøve c++ i visual expres hvorfor virker nogle coder ikke, er det på grund af compiler ?

5 Er der nogle som kender nogle gode links til C++ biblioteker f.eks til styre af Rs232, usb port.

Nicolas



1 hvorfor bruger man ikke global variabler ? i stedet for at låse dem til en funktion er det for at forhindre de skriver i dem ? men man ved vel hvad man sidder og koder.


Når et projekt kommer på et vist antal kodelinjer, er der ikke NOGEN der kan overskue globale variabler. Det er ikke unormalt med flere hundrede tusinde+ kodelinjer. Husk også på, at det måske er en anden person der skal rette i koden senere, og så kan man pludselig ikke overskue hvor en global variabel er blevet sat forkert.

2 kan man lave en grafisk bruger flade i c++, For har lavet et simpel program, synes det er lidt kikse at man skal køre det igennem Dos eller hvad det er den bruger.


Jeps, selvfølgelig kan man anvende/lave en grafisk brugerflade i c++. Prøv at kigge på win32 API som eksempel.

4 Har prøve c++ i visual expres hvorfor virker nogle coder ikke, er det på grund af compiler ?


Coder? Mener du at syntaxen er anderledes eller...? Kom evt. med et eksempel, men ellers vil jeg sige at ja, compileren spiller ind.






2 kan man lave en grafisk bruger flade i c++, For har lavet et simpel program, synes det er lidt kikse at man skal køre det igennem Dos eller hvad det er den bruger.

Nu siger Brian at du skal kigge på win32 API'et...det er jeg uenig i, for det er Windows specifikt, og faktisk ikke særlig nemt at arbejde med. Tag hellere et kig på wxWidgets: http://www.wxwidgets.org/
Det virker på tværs af Windows/*nix/Mac og så er det en del nemmere at arbejde med end win32.

3 Har lavet et program i codeblocks hvorfor skal man download 2 *.dll filer over i system32 for at få det til at køre ? kan det ikke bare ligge i selve programmet ?

DLL'er bruges bl.a. til at dele kode og andre ressourcer mellem programmer. Man kan lænke statisk, og så bliver koden kopieret ind i dit program, men det kommer så til at fylde mere...også i hukommelsen. Hvis to programmer begge bruger den samme DLL, så kan de dele den del af hukommelsen, hvor den ligger.



Tak for jeres svar det gir lidt mening med jeres svar, jeg har lige et par spørgsmål mere i måske kan svar på,

Til Brian, ja jeg mener syntaxen er det på grund af Visual express ikke har de rigtig include filer ??? fordi jeg start med at lære c++ med den guide der er her på Udviklerne jeg starte med visual express og kunne slet ikke få de syntax til at virke, så installeret jeg Codeblocks og så virke de.

Og lige en stor tak til ham som har brugt tid på den guide, den har været til stor hjælp.

Spørgsmål:

1: Er det muligt at lave et program som starter et andet program i c++
for vil gerne lavet et program som skriver en binary fil til et andet program, starter det andet programt som derefter læser den binary fil ind og udfører nogle handlinger ud fra hvad der et skrevet i den binary fil.

2: Er det muligt at tilføje det program jeg har lavet i c++ til wxWidgets altså den grafiske bruger flade eller skal jeg starte helt forfra.

Nicolas



Måske, når nu du har programmeret i Assembler i så lang, ville det være en idé at starte med CIL alias MSIL. Det er en slags assembler til .NET. Det er blandt andet det, C# og andre .NET-sprog bliver kompileret til, og udover at syntaksen er mere assembler-like end fx. C# eller Visual Basic, så opnår du jo samme muligheder for optimering som ved fx. assembler i stedet for C(++).



Thomas, til gengæld mister han den optimering, som compileren giver ham, og compileren kender sandsynligvis MSIL meget bedre :-)

1: Er det muligt at lave et program som starter et andet program i c++

Ja, på flere måder.
Der er den helt simple system() funktion:
Fold kodeboks ind/udC kode 

Nu er jeg på en Linux maskine, men du finder nok ud af, hvad du skal ændre :-)

En lidt mere kraftfuld måde (på Windows) er CreateProcess(), som du kan læse mere om her: http://msdn.microsoft.com/en-us/library/aa908775.aspx
Jeg kan desværre ikke lige strikke et eksempel sammen, for jeg har ikke en Windows maskine i nærheden, men Google kan sikkert hjælpe.
Hvis du er til Linux, må du lige sige til, så kan jeg vise, hvordan man gør der.

2: Er det muligt at tilføje det program jeg har lavet i c++ til wxWidgets altså den grafiske bruger flade eller skal jeg starte helt forfra.

Den forstod jeg ikke helt. Du tilføjer ikke noget til wxWidgets, det er et library, som du kan bruge fra din C/C++ kode til at vise grafiske brugerflader.

Hvis du har lavet et program i C++, så kan du lægge en grafisk brugerflade ovenpå. Du skal da lave brugerflade koden, og så udføre den kode, du allerede har lavet, når der trykkes på knapper eller hvordan det nu skal være.

Alternativt kan du lave et nyt program med wxWidgets, som bare udfører dit eksisterende program og viser resultatet.



Hej Robert

Har prøve at komme i gang med wxWidgets, men kan ikke få det til at virke
når jeg prøver at build et ganske alm "Hallo" projekt kommer den med en fejl meddelelse hver gang.

error: wx/setup.h: No such file or directory


Setup.h bliver kun brugt når platformen er til Unix retter jeg stien til setup.h kommer der endnu flere fejl.

Har du styr på at sætte wxWidgets op i CodeBlocks ?

Nicolas





<< < 123 > >>
t