| delorie.com/archives/browse.cgi | search |
| From: | "Chaos" <chengin AT alpha DOT net DOT pl> |
| Newsgroups: | comp.os.msdos.djgpp |
| Subject: | NASM & GCC. Not very good friends? |
| Lines: | 60 |
| Organization: | Chaos Engine |
| X-Newsreader: | Microsoft Outlook Express 4.72.3110.1 |
| X-MimeOLE: | Produced By Microsoft MimeOLE V4.72.3110.1 |
| X-Original-NNTP-Posting-Host: | pc124.warszawa.ppp.tpnet.pl |
| Message-ID: | <391fe374@news.vogel.pl> |
| X-Original-Trace: | 15 May 2000 13:45:56 +0200, pc124.warszawa.ppp.tpnet.pl |
| Date: | Mon, 15 May 2000 11:50:01 GMT |
| NNTP-Posting-Host: | 195.116.104.13 |
| X-Complaints-To: | abuse AT tpsa DOT pl |
| X-Trace: | news.tpnet.pl 958391401 195.116.104.13 (Mon, 15 May 2000 13:50:01 MET DST) |
| NNTP-Posting-Date: | Mon, 15 May 2000 13:50:01 MET DST |
| To: | djgpp AT delorie DOT com |
| DJ-Gateway: | from newsgroup comp.os.msdos.djgpp |
| Reply-To: | djgpp AT delorie DOT com |
I've tried to include some code written in assembler to my C code in DJGPP.
So reasonable, for someone who isn't familiar with that AT&T crazy syntax,
was to use NASM. So I did. Compilation asm code with NASM, like with gcc
wasn't a problem. They started when I tried to link those object files. Here
are the sources:
-------------------
// Kaszana.c :
#include<stdio.h>
extern unsigned int AddFour(unsigned int);
int main(void)
{
unsigned int var;
var=AddFour(4);
printf("AddFour(4) = %i\n", var);
return 0;
}
---------------------
;Syf.asm :
[BITS 32]
[GLOBAL _AddFour__FUi]
[SECTION .text]
; --------------------------------------------------------------------------
-
; Prototype: unsigned int AddFour(unsigned int x);
; Returns: x + 4
; --------------------------------------------------------------------------
-
x_AddFour equ 8
_AddFour__FUi:
push ebp
mov ebp, esp
mov eax, [ebp + x_AddFour]
add eax, 4
mov esp, ebp
pop ebp
ret
---------------------
Compilation command for gcc was: gcc -c Kaszana.c
NASM was fed with: nasm -f coff Syf.asm
Linking: gcc Kaszana.o Syf.o -o Kaszana.exe
The last command is always ending with:
D:\C\Kaszana>gcc Kaszana.o Syf.o -o Kaszana.exe
Kaszana.o(.text+0x1d):Kaszana.c: undefined reference to `AddFour'
All these source files were taken from "Interfacing DJGPP with
Assembly-Language Procedures" writtenby Matthew Mastracci. I supose that
code is good part, so what can it be what causes erorrs?
Take care.
-=| Chaos |=-
e-mail: chengin AT alpha DOT net DOT pl
chengin AT polbox DOT com
| webmaster | delorie software privacy |
| Copyright © 2019 by DJ Delorie | Updated Jul 2019 |