Autor Thema: NASM Preprozessor  (Gelesen 1832 mal)

Another Stupid Coder

  • Beiträge: 749
    • Profil anzeigen
Gespeichert
« am: 24. May 2005, 18:19 »
Hallo :)
Ich habe da ein kleines Problem, bei diesem Code:

dw ( Isr0 & 0xffff )
dw 0x0008
db 00000000b
db 10001110b
dw ( Isr0 >> 16 )

sagt Nasm immer:

Idt.asm:8: error: `&' operator may only be applied to scalar values
Idt.asm:12: error: shift operator may only be applied to scalar values

Kennt sich da jemand aus? Also weiß jemand, was der Fehler ist? Wenn ich das ganze als Makro machen will, kommt der gleiche Fehler.

DDR-RAM

  • Beiträge: 184
    • Profil anzeigen
Gespeichert
« Antwort #1 am: 24. May 2005, 18:28 »
naja, liegt daran, das Isr0 keine Zahl ist, sondern wahrscheinlich eine Adresse. Die adresse ist allerdings zur assemble-time (so wie compile-time) noch nicht bekannt. die absolute adresse ist erst zur link-time bekannt. Ich weiß auch nicht, wie man das macht.
Man könnte das zur run-time machen, aber wäre nicht elegant.

Bin auch interessiert, ob jemand die Antwort kennt. :D

MfG
DDR-RAM

Roshl

  • Beiträge: 1 128
    • Profil anzeigen
    • http://www.lowlevel.net.tc
Gespeichert
« Antwort #2 am: 24. May 2005, 20:04 »
Eigentlich gehts auch mit nasm, ich hab sowas gemacht um IDT's zu erstellen anhand eines Macros, und ein Parameter war halt eine Funktion da gings ohne Probleme, versuch es mal damit^^
Aber ich vermute mal, dass ging nur weil die Datei gleich in ein binary umgewandelt wurde und nicht erst in ein linkerformat.
[schild=1]Wieder ein wertvoller(?) Beitrag von Roshl[/schild]

Another Stupid Coder

  • Beiträge: 749
    • Profil anzeigen
Gespeichert
« Antwort #3 am: 24. May 2005, 20:28 »
Ähm...ich hatte es ja erst mit einem Makro und die Datei wurde gleich ins Bin-Format umgewandelt.

Wie geht denn sowas mit FASM?

Another Stupid Coder

  • Beiträge: 749
    • Profil anzeigen
Gespeichert
« Antwort #4 am: 24. May 2005, 20:39 »
Okay, ich war noch auf & und << fixiert ;D thx :)

 

Einloggen