Get rid of unneeded function prologues/epilogues

This commit is contained in:
2025-06-26 07:23:29 +02:00
parent 3730086281
commit fc28643c1a
4 changed files with 6 additions and 103 deletions

View File

@ -16,121 +16,78 @@ section .text
;----- min(int a, int b) -----;
; return value: lowest value
min:
push rbp
mov rbp, rsp
mov rax, rdi
cmp rdi, rsi
cmovg rax, rsi
leave
ret
;----- minu(unsigned int a, unsigned int b) -----;
; return value: lowest value
minu:
push rbp
mov rbp, rsp
mov rax, rdi
cmp rdi, rsi
cmova rax, rsi
leave
ret
;----- max(int a, int b) -----;
; return value: highest value
max:
push rbp
mov rbp, rsp
mov rax, rdi
cmp rdi, rsi
cmovl rax, rsi
leave
ret
;----- maxu(unsigned int a, unsigned int b) -----;
; return value: highest value
maxu:
push rbp
mov rbp, rsp
mov rax, rdi
cmp rdi, rsi
cmovb rax, rsi
leave
ret
;----- islower(char* c) -----;
; return value: 1 (character is in range of 'a'-'z') or 0 (character is nog in range of 'a'-'z')
islower:
push rbp
mov rbp, rsp
xor rax, rax
cmp byte [rdi], 'a'
jb .quit
cmp byte [rdi], 'z'
ja .quit
mov rax, 1
.quit:
leave
ret
;----- isupper(char* c) -----;
; return value: 1 (character is in range of 'A'-'Z') or 0 (character is not in range of 'A'-'Z')
isupper:
push rbp
mov rbp, rsp
xor rax, rax
cmp byte [rdi], 'A'
jb .quit
cmp byte [rdi], 'Z'
ja .quit
mov rax, 1
.quit:
leave
ret
;----- tolower(char* c) -----;
; return value: ASCII value. Same as original if it was not an uppercase letter, otherwise lowercase letter
tolower:
push rbp
mov rbp, rsp
call isupper
mov rcx, rax
mov al, byte [rdi]
cmp rcx, 1
jne .quit
add al, 32
.quit:
leave
ret
;----- toupper(char* c) -----;
; return value: ASCII value. Same as original if it was not a lowercase letter, otherwise uppercase letter
toupper:
push rbp
mov rbp, rsp
call islower
mov rcx, rax
mov al, byte [rdi]
cmp rcx, 1
jne .quit
sub al, 32
.quit:
leave
ret
;----- itoa(int num, char* str) -----;
; return value: pointer to str
itoa:
push rbp
mov rbp, rsp
push rbx
push rsi
push rdi
@ -178,7 +135,6 @@ itoa:
.quit:
pop rax
pop rbx
leave
ret
;----- exit(int exit_code) -----;
; returns: nothing