Möchte gerne Assembler programmieren (lernen) unter WIN7 64 Bit, leider gibt es keine (Einsteiger)Bücher die sich mit 32/64 Bit Assemblerprogrammierung befassen. Aber vielleicht finden sich hier Gleichgesinnte die sich in der Gruppe das Thema erarbeiten wollen ?!
Bei Interesse bitte melden!
LG
mikemet
Programmieren - alles kontrollieren 4.941 Themen, 20.708 Beiträge
Verstehe dich nicht, im Internet gibt es jede Menge Seiten die sich mit Assembler-Programmierung beschäftigen , ebenso kostenlose Bücher zum Download wie etwa das hier
http://homepage.mac.com/randyhyde/webster.cs.ucr.edu/www.artofasm.com/Windows/index.html
Natürlich ist Assembler-Programmierung keine "leichte" Sache, da wirst du einiges an Zeit und Arbeit investieren müssen......
Ja, alles 16 BIT, genau das ist das Problem. Zu TASM oder MASM 16Bit gibts (habe ich) einige Bücher nur diese Assembler laufen NICHT unter 64BIT und zum MASM32 oder NASM oder am besten FASM gibts keine Unterlagen oder Bücher für den Einstieg.
http://www.lomont.org/Math/Papers/2009/Introduction%20to%20x64%20Assembly.pdf
Die 64bit-spezifischen Sachen wirst du dir wohl separat aneignen müssen, ich kenn da auch keine Bücher/Internetseiten die sich speziell nur mit 64bit Assembler beschäftigen
Danke für den Link!
Das kommt der Sache schon näher, aber wirklich interessant wäre eben der Einstieg, wie er in meinen Büchern beschrieben wird, (zB Hello World) aber eben so, dass das Programm in einem 64 Bit System kompiliert und ausgeführt werden kann. Dabei geht es mir nicht um die Besonderheiten des 64 Bit Systems sondern um die grundsätzliche Möglichkeit den Assembler zu verwenden und das erstellte Programm in einem 64 Bit OS ausführen zu können. Sämtliche Versuche die 16 Bit Programme aus den Büchern, Beispielsweise von MASM umzuschreiben und diese mit dem MASM32 zu kompilieren, sind mangels Fachwissen meinerseits, bisher gescheitert.
Folgende Diplomarbeit zur Assembler Windowsprogrammierung habe ich gefunden:
http://priniel.dnsalias.com/asm32/Diplomarbeit_NDSI12/Dokumente/Manual-Assembler_unter_WindowsXP.pdf
So eine Anleitung für die Konsole wäre ein Traum ;o)
Folgenden "Hello World" funktionsfähigen Quellcode habe ich gerade gefunden:
format PE console
entry start
include 'C:\fasm\include\win32a.inc'
;======================================
section '.data' data readable writeable
;======================================
hello_msg db 'Hello, world!',0
;=======================================
section '.code' code readable executable
;=======================================
start:
ccall [printf],hello_msg
ccall [getchar]
stdcall [ExitProcess],0
;====================================
section '.idata' import data readable
;====================================
library kernel,'kernel32.dll',\
msvcrt,'msvcrt.dll'
import kernel,\
ExitProcess,'ExitProcess'
import msvcrt,\
printf,'printf',\
getchar,'_fgetchar'
Villeicht sowas wie das hier
http://www.dreamincode.net/forums/topic/166917-assembler-x64-writing-a-64-bit-frame-window/
Eine ganz ketzerische Frage... lohnt sich Assembler heutzutage eigentlich noch?
Ich weiß, dass das zu Atari-Zeiten immer ein ganz großes Thema war, aber damals hatten die Rechner auch nur 8 MHz Takt und nicht 3 GHz.
Der Assembler-Code wird doch nach wie vor bei der kleinsten Änderung am System inkompatibel und lässt sich auch nicht auf andere Systeme portieren, oder täusche ich mich da? (...sozusagen ein "Anti-Java").
THX
Olaf
Sofern es um embedded entwicklung geht sind assembler kentnisse nach wie vor wichtig und der markt boomt wie sau, da werden dringend leute gesucht. Auf nem PC macht es Sinn wenn man gleich hart in die Systemarchitektur einsteigen will - Treiberentwicklung oder vereinzelt auch Peripherie. Ob der Mac das überhaupt zulässt bzw. ob es iAssembler gibt weiss ich leider nicht.
Nun "iAssembler" heißt das Teil zwar nicht - schade eigentlich *g* - aber einen Assembler gibt es afaik eigentlich für jedes System: http://developer.apple.com/library/mac/#documentation/DeveloperTools/Reference/Assembler/000-Introduction/introduction.html
THX
Olaf
Ja, seit ich mich mit Assembler beschäftige weis ich um einiges mehr von meinem PC innenleben. Natürlich mit modernen Programmiersprachen kommt man meist schneller zum Ziel, vorallem beim Programmieren von Standardanwendungen. Sollte es aber um spezielle, hardwarenahe Programmierung gehen ist Assembler immernoch eine gute wahl. Viele Programmiersprachen bieten die Möglichkeit einer Inline Assemblerprogrammierung für Zeitkritische Programmteile und auch Treiber werden zum Teil noch in Assembler verfasst. Auch beim Lowlevelprogrammieren von Betriebsystemen wird neben C auch noch Assembler verwendet.
Das Assembler-Code nach den kleinsten Änderungen am System inkompatibel wird, stimmt so nicht den alle IBM Kompatiblen Prozessoren sind "Abwärtskompatibel" das heisst selbst die neuerste Generation versteht noch die Befehle eines 8086 Prozessors aus dem Jahre 1987. Natürlich sind inzwischen viele neue Befehle hinzugekommen und wenn das Programm an die neueste Prozessorgeneration angepasst ist, ist dieses natürlich zu den Vorgängern inkompatibel.
Meine hier aufgezeigte Frage ergiebt sich auch nicht aus der Verwendung eines neuen Prozessors sondern das Problem tritt auf da einem 64Bit Windowssystem keine 16Bit Programme mehr laufen. Würde ich auf dem selben Rechner ein 32Bit Betriebssystem installieren, wären auch die 16Bit Programme kein Problem (dann könnte das Betriebssytem aber meine 4 GB RAM nicht mehr ausnutzen).
Ach ja was ich noch sagen wollte mich interessiert hauptsächlich die Assembler-Programmierung (FASM) von Konsolenprogrammen 32/64 Bit, für die Windowsprogrammierung habe ich schon ein paar gute Seiten.
Okay - in diesem Fall wäre wohl auch die Portabilität auf andere Systeme nicht das Wichtigste.
Inline-Assemblercode für performance-kritische Routinen innerhalb von C oder (damals auch gerne) Pascal war schon in den 80ern recht beliebt.
Danke für deine ausführliche Antwort, war ganz aufschlussreich.
THX
Olaf