fix some calling convention stuff

This commit is contained in:
pommicket 2022-02-10 13:24:02 -05:00
parent 3d44eba388
commit b88de92fc7
6 changed files with 98 additions and 22 deletions

View file

@ -1,3 +1,11 @@
function sign_extend_32_to_64
argument n
local c
c = n > 31
n |= c * 0xffffffff00000000
return n
; multiply two 64-bit signed numbers to a 128-bit number
function full_multiply_signed
argument a
@ -456,15 +464,27 @@ function fputn_signed
argument fd
argument n
if n < 0 goto fputn_negative
fputn(fd, n)
return
fputn(fd, n)
return
:fputn_negative
fputc(fd, '-)
n = 0 - n
fputn(fd, n)
return
; like fputn_signed, but include the sign even if it's zero or positive
function fputn_with_sign
argument fd
argument n
if n < 0 goto fputn_with_sign_negative
fputc(fd, '+)
fputn(fd, n)
return
:fputn_with_sign_negative
fputc(fd, '-)
n = 0 - n
fputn(fd, n)
return
:hex_digits
string 0123456789abcdef
@ -527,6 +547,11 @@ function putn_signed
fputn_signed(1, n)
return
function putn_with_sign
argument n
fputn_with_sign(1, n)
return
function putnln
argument n
fputn(1, n)
@ -539,6 +564,11 @@ function putnln_signed
fputc(1, 10)
return
function putnln_with_sign
argument n
fputn_with_sign(1, n)
fputc(1, 10)
return
function fputc
argument fd