From de9f6866a3b3732ddb977ee11f6506cccde311b6 Mon Sep 17 00:00:00 2001 From: Ed Cavazos Date: Sat, 23 Jul 2011 00:53:54 -0500 Subject: [PATCH] add sincos md --- sincos.md | 73 ++++++++++++++++++++++++++++++++++++++++++++++++++++ sincos.md.in | 19 ++++++++++++++ 2 files changed, 92 insertions(+) create mode 100644 sincos.md create mode 100644 sincos.md.in diff --git a/sincos.md b/sincos.md new file mode 100644 index 0000000..3870f6f --- /dev/null +++ b/sincos.md @@ -0,0 +1,73 @@ + +# Call the sincos glibc C function + +# C + +```c + +#define _GNU_SOURCE + +#include +#include +#include + +int main ( int argc , char * argv[] ) +{ + double a ; + double b ; + double c ; + + a = atof( argv[1] ) ; + + sincos( a , &b , &c ) ; + + printf( "%f %f\n" , b , c ) ; + + return 0 ; +} +``` + +# Assembly + +```s + + .include "utils.s" + + global_text main + + prepare_stack + + .set offset , 0 + + stack_allocate ARGV , 8 + stack_allocate A , 8 + stack_allocate B , 8 + stack_allocate C , 8 + + mov %rsi , ARGV(%rbp) + + ref8 ARGV , 1 , %rdi + call atof ; + movsd %xmm0 , A(%rbp) + + movsd A(%rbp) , %xmm0 + lea B(%rbp) , %rdi + lea C(%rbp) , %rsi + + call sincos + + print_double B(%rbp) + print_literal_string " " + print_double C(%rbp) + + print_nl + + return_integer $0 + + + ``` + +# Assemble and run + + $ gcc sincos.s -lm && ./a.out 0.0 + 0.000000 1.000000 \ No newline at end of file diff --git a/sincos.md.in b/sincos.md.in new file mode 100644 index 0000000..3ca518a --- /dev/null +++ b/sincos.md.in @@ -0,0 +1,19 @@ + +# Call the sincos glibc C function + +# C + +```c +#include file="sincos.c" +``` + +# Assembly + +```s +#include file="sincos.s" +``` + +# Assemble and run + + $ gcc sincos.s -lm && ./a.out 0.0 + 0.000000 1.000000 \ No newline at end of file