Re: Problem with fasm
- From: Frank Kotler <spamtrap@xxxxxxxxxx>
- Date: Sat, 22 Mar 2008 10:24:31 GMT
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;
}
.
- Follow-Ups:
- Re: Problem with fasm
- From: suchi_01
- Re: Problem with fasm
- From: suchi_01
- Re: Problem with fasm
- References:
- Problem with fasm
- From: suchi_01
- Problem with fasm
- Prev by Date: Problem with fasm
- Next by Date: int 0x13 utility
- Previous by thread: Problem with fasm
- Next by thread: Re: Problem with fasm
- Index(es):
Relevant Pages
|