blob: 67a83c8985653ad7d125717fc5768bd154139ba1 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
|
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; ;;
;; File : jo_c_args.asm /_________/ ;;
;; Author : Joe | ;;
;; Date : 04/2020 | ;;
;; Info : Check args | ;;
;; / | ;;
;; \ / ;;
;; \_____/ ;;
;; ;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; jo_c_args(argc: rdi, *argv[]: rsi)
;; ----------------------------------
;; returns 0 if args are invalid
;; returns 1 if args are valid
section .text
extern strncmp
global jo_c_args
jo_c_args:
cmp rdi, 0x2
jle no_args
mov rax, [rsi + 0x8 * 0x2]
cmp byte [rax + 0x0], 0x0
je no_args
push rdi
mov rdi, [rsi + 0x8 * 0x1]
push rsi
mov rsi, reference
mov rdx, reflen
call strncmp
pop rsi
pop rdi
cmp rax, 0x0
jne no_args
mov rax, 0x1
retq
no_args:
xor rax, rax
retq
section .data
reference: db "--say", 0x0
reflen: equ $ - reference
|