You need the AMD64 Application Binary Interface (v0.99) available at http://www.x86-64.org/documentation.html In particular, see Figure 3.4 on page 21. Pay attention to the use of rax. The default for floating point in x88-64 is the SSE unit. If a function will accept floating point arguments (for example, printf) the number of floating point arguments must be placed in eax. Write a C program that calls printf and use the -S option to see the assembly language. A good way to see what the compiler is doing to C code is to use the following options: $ gcc -O0 -g -Wa,-adhls -fno-asynchronous-unwind-tables \ > myProg.c > myProg.lst (I added the "\" here to avoid confusing word wrapping.) Bob On Thu, 2008-12-04 at 12:20 -0800, £ukasz wrote: > Hi. > I started to write assembler functions for C on 64-bit arch. On 32-bit arch. every parameters ware put on stack, now is different, what can be easyly seen reading source program. For example if im passing one > (int *) parameter, adress (&int) is kept in %rdi register, and so one if u are passing more parameters. Ofcurse is not dificult to use it if u know but is there any key according to which parameters are stored?. I've made some "experiments" with different numbers and kind parameters, but the "key" must be described somewhere. > > Luke -- To unsubscribe from this list: send the line "unsubscribe linux-assembly" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html
- References:
- Prev by Date: Re: Passing parameters to assembler functions in 'C' 64 style.
- Next by Date: Re: Passing parameters to assembler functions in 'C' 64 style.
- Previous by thread: Re: Passing parameters to assembler functions in 'C' 64 style.
- Next by thread: Re: Passing parameters to assembler functions in 'C' 64 style.
- Index(es):