; test source file for assembling to MACH-O 
; build with :
;    yasm -f macho machotest.asm
;    gcc -o machotest machotest.c machotest.o

; This file should test the following:
; [1] Define and export a global text-section symbol
; [2] Define and export a global data-section symbol
; [3] Define and export a global BSS-section symbol
; [4] Define a non-global text-section symbol
; [5] Define a non-global data-section symbol
; [6] Define a non-global BSS-section symbol
; [7] Define a COMMON symbol
; [8] Define a NASM local label
; [9] Reference a NASM local label
; [10] Import an external symbol (note: printf replaced by another call)
; [11] Make a PC-relative call to an external symbol
; [12] Reference a text-section symbol in the text section
; [13] Reference a data-section symbol in the text section
; [14] Reference a BSS-section symbol in the text section
; [15] Reference a text-section symbol in the data section
; [16] Reference a data-section symbol in the data section
; [17] Reference a BSS-section symbol in the data section

[BITS 32]
[GLOBAL _lrotate]	; [1]
[GLOBAL _greet]		; [1]
[GLOBAL _asmstr]	; [2]
[GLOBAL _textptr]	; [2]
[GLOBAL _selfptr]	; [2]
[GLOBAL _integer]	; [3]
[EXTERN _druck]		; [10]
[COMMON _commvar 4]	; [7]

[SECTION .text]

; prototype: long lrotate(long x, int num);
_lrotate:			; [1]
	  push ebp
	  mov ebp,esp
	  mov eax,[ebp+8]
	  mov ecx,[ebp+12]
.label	  rol eax,1		; [4] [8]
	  loop .label		; [9] [12]
	  mov esp,ebp
	  pop ebp
	  ret

; prototype: void greet(void);
_greet
	  mov eax,[_integer]	; [14]
	  inc eax
	  mov [localint],eax	; [14]
	  push dword [_commvar]
	  mov eax,[localptr]	; [13]
	  push dword [eax]
	  push dword [_integer]	; [1] [14]
	  push dword _printfstr	; [13]
	  call _druck		; [11]
	  add esp,16
	  ret

; some internal calls
	call _greet
	call _lrotate.label

[SECTION .data]

; a string
_asmstr	  db 'hello, world', 0	; [2]

; a string for Printf 
_printfstr db "integer==%d, localint==%d, commvar=%d"
	  db 10, 0

; some pointers
localptr  dd localint		; [5] [17]
_textptr  dd _greet		; [15]
_selfptr  dd _selfptr		; [16]

[SECTION .bss]

; an integer
_integer  resd 1		; [3]

; a local integer
localint  resd 1		; [6]
