Thread Inline-ASM: Problem (12 answers)
Opened by master at 2005-11-12 13:23

murphy
 2005-11-14 11:30
#60048 #60048
User since
2004-07-19
1776 Artikel
HausmeisterIn
[Homepage]
user image
- Bevor du eines der Inline Module verwendest, musst du natürlich den entsprechenden Compiler installieren, denn alle Inline Module verlassen sich auf externe Tools um den eingebetteten Code zu übersetzen.

- Standardmäßig wird unter Windows wohl immer die Makrosaft Toolchain benutzt. Das Beispiel das du da hast wird aber garantiert nicht mit einem Makrosaft Assembler funktionieren, da es im AT&T Assemblerdialekt geschrieben ist, wie ihn der GNU Assembler verwendet, nicht jedoch die Microsoft Tools, welche sich an den Intel Assemblerdialekt halten. Da würde derselbe Code ungefähr so aussehen:
Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
segment data
gstr: db 'Hello %s!', 10, 13

segment code
global greet
extern _printf

greet: mov eax, [esp + 4]
push eax
push dword gstr
call _printf
leave
ret


- Auch wenn das hier nicht das Problem war, solltest du dir natürlich im klaren sein, dass Assembler nicht nur in verschiedenen Dialekten daherkommt sondern auch maximal maschinenspezifisch ist, sprich, was auf ix86 Prozessoren von Intel läuft, muss bei AMD Chips nicht unbedingt mehr funktionieren und umgekehrt; was auf irgendeiner intelkompatiblen Architektur läuft, funktioniert auf SPARC, MIPS oder PowerPC natürlich gar nicht mehr, etc.

- Mit einiger Magie aus dem B Modul kann man auch Binaercode in ein laufendes Perlprogramm einbauen, aber ich halte das nicht für einen sauberen Programmieransatz.
When C++ is your hammer, every problem looks like your thumb.

View full thread Inline-ASM: Problem