digitalmars.D.learn - Referring to labels in asm block
- Jonathan Andrew (29/41) Aug 14 2005 Hello,
Hello, I'm trying to use D to setup a GDT for some low level code, as in: http://www.digitalmars.com/drn-bin/wwwnews?digitalmars.D.learn/834. However, in trying to do this, I can't seem to refer to any labels. Here's what I'm trying to do: void flushGDT() { asm { lgdt [gp]; mov AX, 0x10; mov DS, AX; mov ES, AX; mov FS, AX; mov GS, AX; push 0x08; push flush; //also tried 'push [flush]' ret; flush: nop; } } The compiler says "unidentified identifier 'flush'". The only other reference to anything like this which I could find was the following post in the D archives, which seemed to think that the behavior was a bug.D - [BUG] Labels can't be moved, pushed, etc. in asm block The following codes cause a compile error "undefined identifier 'LABEL'". asm { LABEL: mov EAX, offset LABEL; push offset LABEL; lea EAX, LABEL; } and so on. Robert (Japanese)"So, is this a bug in the compiler? Is what I'm trying to do even valid? I'm not really an asm expert, I'm just trying to get code from http://www.osdever.net/bkerndev/index.php?the_id=90 working in D. Thanks for any help anybody can give me! -Jon Andrew
Aug 14 2005