Re: Problem with fasm



Hi Frank,
I am sorry i was not clear about the environment. The code
(assembly language function) is called during boot time by a
bootsector code (after enabling protected mode). I am successful in
calling the function but it does not return back to the C code back
(ie., next line after the call in C Code). At boot time there is no
elf loader and it is difficult to point it to where it has to return.
Mysteriously, using global in nasm does the stuff!

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
fasmsource of a driver and want to integrate it to my kernel.
However, there is a problem:

1. If i call aFASMfunction 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 aNASMfunction 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 aglobalkeyword or similar stuff inFASM?

"public", AFAIK. We need to tellFasma "format", too (in the source,
not on the command line likeNasm). As a test, I just "converted" aNasm
demo I had toFasm(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 thinkFasmsupports OMF. What format are
you using?

Best,
Frank

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

publicgetvendor

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)