Compare commits

..

2 Commits

2 changed files with 14 additions and 16 deletions

View File

@@ -38,28 +38,26 @@ arena_init:
ret ret
; size_t align_up(size_t x, size_t a) ; size_t align_up(size_t x, size_t a)
; eax, ebx. ecx are all clobbered ; ax, bx. cx are all clobbered
; align x up to the nearest specified alignment (a), a should be a power of 2
; (x + (a-1)) & ~(a-1)
; return value in ax
arena_align_up: arena_align_up:
__CDECL16_ENTRY __CDECL16_ENTRY
.func: .func:
; align x up to the nearest specified alignment (a)
; (x + (a-1)) & ~(a-1) mov ax, [bp + 4] ; x
mov eax, [bp + 4] ; x
mov ebx, [bp + 6] ; a - 1 mov bx, [bp + 6]
sub ebx, 1 sub bx, 1 ; a - 1
mov ecx, eax mov cx, ax
add ecx, ebx ; x + (a+1) add cx, bx ; x + (a+1)
not bx ; ~(a-1)
not ebx and cx, bx ; and with the inverse
and ecx, ebx ; ecx contains the result
xor eax, eax
xor ebx, ebx
mov eax, ecx ; return result in eax
xor ecx, ecx
mov ax, cx ; move to ax and return
.endp: .endp:
__CDECL16_EXIT __CDECL16_EXIT
ret ret

View File

@@ -160,7 +160,7 @@ main:
call GetMemoryMap call GetMemoryMap
print_string MemoryMap_OK_info print_string MemoryMap_OK_info
; enter unreal mode ; enter unreal mode (16 bit code, 32 bit flat memory model)
call EnterUnrealMode call EnterUnrealMode
print_string UnrealMode_OK_info print_string UnrealMode_OK_info