snippet scode Start basic code for assembly
	.data


	.text


	.global main


	main:


snippet scodes Start basic code for assembly with _start label
	.data


	.text


	.globl _start


	_start:


snippet lo Long
	$1: .long $2
snippet wo Word
	$1: .word $2
snippet by Byte
	$1: .byte $2
snippet sp Space
	$1: .space $2
snippet ai Ascii
	$1: .ascii "$2"
snippet az Asciz
	$1: .asciz "$2"
snippet ze Zero
	$1: .zero "$2"
snippet qu Quad
	$1: .quad "$2"
snippet si Single
	$1: .single "$2"
snippet do Double
	$1: .single "$2"
snippet fl Float
	$1: .single "$2"
snippet oc Octa
	$1: .single "$2"
snippet sh Short
	$1: .single "$2"
snippet exit0 Exit without error
	movl \$1, %eax
	xorl %ebx, %ebx
	int \$0x80

snippet exit Exit with error
	mov \$1, %eax
	mov $1, %ebx
	int \$0x80

snippet readfstdin Read fixed length text from stdin
	mov \$3, %eax
	mov \$2, %ebx
	mov $1, %ecx
	mov $2, %edx
	int \$0x80

snippet writestdout Write text to stdout
	mov \$4, %eax
	mov \$1, %ebx
	mov $1, %ecx
	mov $2, %edx
	int \$0x80

snippet writestderr Write text to stderr
	mov \$4, %eax
	mov \$2, %ebx
	mov $1, %ecx
	mov $2, %edx
	int \$0x80

snippet * Multiplication
	mov $1, %eax
	mul $2

snippet / Division
	mov $1, %eax
	div $2

snippet jmpl Conditional lower jump
	cmp $1, $2
	jl $3 

snippet jmple Conditional lower or equal jump
	cmp $1, $2
	jle $3 

snippet jmpe Conditional equal jump
	cmp $1, $2
	je $3 

snippet jmpn Conditional not equal jump
	cmp $1, $2
	jn $3

snippet jmpg Conditional greater jump
	cmp $1, $2
	jg $3

snippet jmpge Conditional greater or equal jump
	cmp $1, $2
	je $3

snippet loopn Loop n times
	mov $1, %ecx

	et_for:
		$2

		loop et_for

snippet loopnn Loop n-1 times
	mov $1, %ecx
	dec %ecx

	et_for:
		$2

		loop et_for

snippet loopv Loop through a vector
	lea $1, %edi
	xor %ecx, %ecx

	et_for:
		cmp %ecx, $2
		je $3

		$4

		inc %ecx
		jmp et_for

snippet mul Multiply
	xor %edx, %edx
	mov $1, %eax
	mul $2
snippet mul64 Multiply numbers greater than 2^32
	mov $1, %edx
	mov $2, %eax
	mul $3
snippet div Divide
	xor %edx, %edx
	mov $1, %eax
	div $2
snippet div64 Divide numbers greater than 2^32
	mov $1, %edx
	mov $2, %eax
	div $3
snippet pr Call printf
	pushl $1
	call printf
	popl $2
snippet sc Call scanf
	pushl $1
	call scanf
	popl $2
snippet mindex Current index from a matrix
	xor %edx, %edx
	movl $1, %eax
	mull $2
	addl $3, %eax
snippet ffl Call fflush
	pushl \$0
	call fflush
	popl $1
snippet at Call atoi
	pushl $1
	call atoi
	popl $2
snippet len Call strlen
	pushl $1
	call strlen
	popl $2
snippet proc Basic procedure
	$1:
	pushl %ebp
	movl %esp, %ebp

	$2

	popl %ebp
	ret
