Re: Problem with fasm



Hi Frank,
Thanks for the reply. Will try it and let you know. This
is precisely what i want to do, but the problem is that the bootsector
code does not have an elf loader yet, so i don't know whether .text
part will be identified and put in the right place or not during boot
process

Suchindra Chandrahas





On Mar 22, 3:24 pm, Frank Kotler <spamt...@xxxxxxxxxx> wrote:
suchi_01 wrote:
Hi All,
There is a complicated issue here. I have downloaded
fasm source of a driver and want to integrate it to my kernel.
However, there is a problem:

1. If i call a FASM function from within C code (kernel), it is not
able to return back to the next line in C Code

What *does* it do?



2. If i call a NASM function from within C Code, it works properly (it
returns back to next line in C Code)

Here are the code snippets:

NASM:

global <func name>

<func name>:
ret

FASM:

public <func name>

<func name>:
ret

Is there a global keyword or similar stuff in FASM?

"public", AFAIK. We need to tell Fasm a "format", too (in the source,
not on the command line like Nasm). As a test, I just "converted" a Nasm
demo I had to Fasm (just added "format elf", changed "global" to
"public" and fixed up the section declaration). Worked fine. The only
issue I can see is that I don't think Fasm supports OMF. What format are
you using?

Best,
Frank

;---------------
format elf

public getvendor

section ".text" executable
getvendor:
pusha
xor eax, eax
cpuid
mov eax, [esp + 36]
mov [eax], ebx
mov [eax + 4], edx
mov [eax + 8], ecx
mov byte [eax + 12], 0
popa
xor eax, eax
ret
;-----------------

And the C caller...

#include <stdio.h>

void getvendor(char *vendorbuf);

int main(void)
{char vendorbuf[13];
getvendor(vendorbuf);

puts(vendorbuf);
return 0;
}

.



Relevant Pages

  • Re: Macro2D
    ... õ1, eax", 0 ... db "push striIIi", NL ... db ".2: cmp edi, ebp", NL ... db ".4: mov eax, edi", NL ...
    (alt.lang.asm)
  • One RosAsm Pre-parser
    ... cmp eax 0 | ja L0<< ... mov ecx, D ...
    (alt.lang.asm)
  • Re: Fastcode Library Design
    ... cmp ecx, SMALLMOVESIZE ... lea edx, ... fild qword ptr [eax] ... mov ecx, ...
    (borland.public.delphi.language.basm)
  • Re: Macro2D
    ... mov, eax ... cmp eax, -1 ... push STD_INPUT_HANDLE ...
    (alt.lang.asm)
  • a problem in n5.dll in windows 95
    ... eax srandMl ... mov ebp, esp ... push dword @lpm ... mov esi, @adw ...
    (alt.lang.asm)