37 lines
566 B
NASM
37 lines
566 B
NASM
|
; Copyright 2020 KoroLion (github.com/KoroLion)
|
||
|
|
||
|
global sum
|
||
|
global fx
|
||
|
|
||
|
section .data
|
||
|
section .bss
|
||
|
temp: resb 4
|
||
|
|
||
|
section .text
|
||
|
|
||
|
; float sum(float x, float y)
|
||
|
; return x + y
|
||
|
sum:
|
||
|
finit
|
||
|
|
||
|
fld dword [esp + 4] ; st0 = x
|
||
|
fadd dword [esp + 8] ; st0 += y
|
||
|
|
||
|
ret ; returns st0 to c
|
||
|
|
||
|
; float fx(float x)
|
||
|
; return 1 / (x + 2)
|
||
|
fx:
|
||
|
; st1
|
||
|
fld dword [esp + 4] ; st1 = x
|
||
|
mov dword [temp], 2
|
||
|
fiadd dword [temp] ; st1 += 2
|
||
|
|
||
|
; st0
|
||
|
mov dword [temp], 1
|
||
|
fild dword [temp] ; st0 = 1
|
||
|
|
||
|
fdiv st0, st1 ; st0 /= st1
|
||
|
|
||
|
ret ; returns st0 to c
|