Hello,

I taked to Florian and he explained everything, so I can answer my own
question for others that search this later =)

Basically fpc writes the idata sections manually, and that is the
import table on pe executables. Here is a example app that links to
ExitProcess from kernel32 dll (I know there are some things wrong with
the app, but it does work).

/* Hello world to create a symbian os executable on assembler */

        .file   "hello.s"
        .text
        /* Variables */
mymessage:
        .ascii  "My Message"

        /* Entry point for Symbian OS executables */
        .globl _E32EXE
_E32EXE:
        /* Entry point for MS Windows */
        .globl main
main:
        /* Entry point for GCC */
        .globl [EMAIL PROTECTED]
[EMAIL PROTECTED]:
        MOV   $0, %EAX
        PUSH    %EAX
        MOV     $mymessage, %EAX
        PUSH  %EAX
        MOV   $0, %EAX
        PUSH    %EAX
        PUSH  %EAX
        CALL    MessageBox
        MOV   $0, %EAX
        LEAVE
        RET
        NOP
        NOP

.section .text
        .balign 4

.section .idata$2
        .rva    .L16
        .long   0
        .long   0
        .rva    .L15
        .rva    .L17

.section .idata$4
.L16:
        .rva    .L18
        .long   0

.section .idata$5
.L17:

.section .text
.globl  MessageBox
MessageBox:
        jmp     *.L19
        .balign 4,144

.section .idata$5
.L19:
        .rva    .L18
        .long   0

.section .idata$6
.L18:
        .short  0
        .ascii  "ExitProcess\000"
        .balign 2,0

.section .idata$7
.L15:
        .ascii  "kernel32.dll\000"
_______________________________________________
fpc-devel maillist  -  [EMAIL PROTECTED]
http://lists.freepascal.org/mailman/listinfo/fpc-devel

Reply via email to