NASM - The Netwide Assembler
NASM Forum => Using NASM => Topic started by: nobody on September 18, 2008, 01:48:17 PM
-
Hello,
I start to use nasm for a little bit of code with SDL libraries,
but now that I start to test a little bit of code, I get
a segmentation fault. This piece of code should only call
SDL_MapRGB(). The video was initialized in c main program.
; background is wheat
%define BACKGROUND_RED 0xf5
%define BACKGROUND_GREEN 0xde
%define BACKGROUND_BLUE 0xb3
; void demo (SDL_Surface *screen, SDL_PixelFormat *format, Uint8 bpp, int width, int height, Uint16 pitch, void *pixels);
%define pixels (ebp + 8)
%define pitch (ebp + 12)
%define height (ebp + 16)
%define width (ebp + 20)
%define bpp (ebp + 24)
%define format (ebp + 28)
%define screen (ebp + 32)
segment .text
global demo
extern SDL_MapRGB
; local variables
%define background (ebp - 4)
demo: enter 4,0
; Uint32 SDL_MapRGB (SDL_PixelFormat *, Uint8 r, Uint8 g, Uint8 b);
push dword BACKGROUND_BLUE
push dword BACKGROUND_GREEN
push dword BACKGROUND_RED
push dword [format]
call SDL_MapRGB
add esp, 16
mov [background], eax
leave
ret
Any suspect?
-
I don't think you should have to do this, but, in desperation, try:
lea eax, [format]
push eax
I *really* don't think you should have to do that... but I don't see too many other places it could be going wrong...
Best,
Frank
-
No, that's not. Looking at include file of SDL seems that
it follow the standard C calling convection, so?
Two lines of code and I am becoming mad.. :-)
-
Trying to write a little .c program that does like the
assembly code should do, and see the assembly output with
the -S option, it seems that gcc add a lot of stuff,
working with more local variables that I do not use.
?!?!