make macro for push imm/pop dst

git-svn-id: svn://kolibrios.org@3598 a494cfbc-eb01-0410-851d-a64ba20cac60
This commit is contained in:
CleverMouse 2013-06-04 11:14:37 +00:00
parent e80ec77b74
commit a77e7ee15d
25 changed files with 109 additions and 164 deletions

View File

@ -335,8 +335,7 @@ disk_add:
push ebx esi ; save used registers to be stdcall push ebx esi ; save used registers to be stdcall
; 1. Allocate the DISK structure. ; 1. Allocate the DISK structure.
; 1a. Call the heap manager. ; 1a. Call the heap manager.
push sizeof.DISK movi eax, sizeof.DISK
pop eax
call malloc call malloc
; 1b. Check the result. If allocation failed, return (go to 9) with eax = 0. ; 1b. Check the result. If allocation failed, return (go to 9) with eax = 0.
test eax, eax test eax, eax
@ -608,15 +607,13 @@ disk_call_driver:
; The default implementation of DISKFUNC.querymedia. ; The default implementation of DISKFUNC.querymedia.
disk_default_querymedia: disk_default_querymedia:
push DISK_STATUS_INVALID_CALL movi eax, DISK_STATUS_INVALID_CALL
pop eax
ret 8 ret 8
; The default implementation of DISKFUNC.read and DISKFUNC.write. ; The default implementation of DISKFUNC.read and DISKFUNC.write.
disk_default_read: disk_default_read:
disk_default_write: disk_default_write:
push DISK_STATUS_INVALID_CALL movi eax, DISK_STATUS_INVALID_CALL
pop eax
ret 20 ret 20
; The default implementation of DISKFUNC.close, DISKFUNC.closemedia and ; The default implementation of DISKFUNC.close, DISKFUNC.closemedia and
@ -1002,8 +999,7 @@ end virtual
jnz .success jnz .success
; 3. No file system has recognized the volume, so just allocate the PARTITION ; 3. No file system has recognized the volume, so just allocate the PARTITION
; structure without extra fields. ; structure without extra fields.
push sizeof.PARTITION movi eax, sizeof.PARTITION
pop eax
call malloc call malloc
test eax, eax test eax, eax
jz .nothing jz .nothing

View File

@ -1252,8 +1252,7 @@ fat_gen_short_name:
stosd stosd
pop edi pop edi
xor eax, eax xor eax, eax
push 8 movi ebx, 8
pop ebx
lea ecx, [edi+8] lea ecx, [edi+8]
.loop: .loop:
lodsb lodsb
@ -1538,8 +1537,7 @@ fs_RamdiskRewrite:
push ecx edi push ecx edi
mov ecx, 8 mov ecx, 8
repnz scasb repnz scasb
push 1 movi eax, 1 ; 1 entry
pop eax ; 1 entry
jnz .notilde jnz .notilde
; we need ceil(strlen(esi)/13) additional entries = floor((strlen(esi)+12+13)/13) total ; we need ceil(strlen(esi)/13) additional entries = floor((strlen(esi)+12+13)/13) total
xor eax, eax xor eax, eax
@ -1764,8 +1762,7 @@ fs_RamdiskRewrite:
add esp, 20 add esp, 20
mov [esp+16], ebx mov [esp+16], ebx
popad popad
push ERROR_DISK_FULL movi eax, ERROR_DISK_FULL
pop eax
ret ret
.writedir: .writedir:
mov edi, eax mov edi, eax
@ -1957,8 +1954,7 @@ ramdisk_extend_file:
jb @b jb @b
.fat_err: .fat_err:
pop ecx pop ecx
push ERROR_FAT_TABLE movi eax, ERROR_FAT_TABLE
pop eax
stc stc
ret ret
@@: @@:
@ -2033,8 +2029,7 @@ ramdisk_extend_file:
pop edi ecx pop edi ecx
pop esi edx pop esi edx
stc stc
push ERROR_DISK_FULL movi eax, ERROR_DISK_FULL
pop eax
ret ret
fat_update_datetime: fat_update_datetime:

View File

@ -50,8 +50,7 @@ real_start:
; get file system information ; get file system information
; scan for Primary Volume Descriptor ; scan for Primary Volume Descriptor
db 66h db 66h
push 10h-1 movi eax, 10h-1
pop eax
pvd_scan_loop: pvd_scan_loop:
mov cx, 1 mov cx, 1
inc eax inc eax

View File

@ -680,8 +680,7 @@ end virtual
jmp .no_device jmp .no_device
.has_device: .has_device:
push eax push eax
push sizeof.PCIDEV movi eax, sizeof.PCIDEV
pop eax
call malloc call malloc
pop ecx pop ecx
test eax, eax test eax, eax

View File

@ -330,8 +330,7 @@ end if
; 2b. Fill first 32 entries. ; 2b. Fill first 32 entries.
inc eax inc eax
inc eax ; set Type to EHCI_TYPE_QH inc eax ; set Type to EHCI_TYPE_QH
push 32 movi ecx, 32
pop ecx
mov edx, ecx mov edx, ecx
@@: @@:
stosd stosd
@ -434,14 +433,12 @@ end if
; now edi = MMIOBase2 ; now edi = MMIOBase2
; 6. Transfer the controller to a known state. ; 6. Transfer the controller to a known state.
; 6b. Stop the controller if it is running. ; 6b. Stop the controller if it is running.
push 10 movi ecx, 10
pop ecx
test dword [edi+EhciStatusReg], 1 shl 12 test dword [edi+EhciStatusReg], 1 shl 12
jnz .stopped jnz .stopped
and dword [edi+EhciCommandReg], not 1 and dword [edi+EhciCommandReg], not 1
@@: @@:
push 1 movi esi, 1
pop esi
call delay_ms call delay_ms
test dword [edi+EhciStatusReg], 1 shl 12 test dword [edi+EhciStatusReg], 1 shl 12
jnz .stopped jnz .stopped
@ -451,11 +448,9 @@ end if
.stopped: .stopped:
; 6c. Reset the controller. Wait up to 50 ms checking status every 1 ms. ; 6c. Reset the controller. Wait up to 50 ms checking status every 1 ms.
or dword [edi+EhciCommandReg], 2 or dword [edi+EhciCommandReg], 2
push 50 movi ecx, 50
pop ecx
@@: @@:
push 1 movi esi, 1
pop esi
call delay_ms call delay_ms
test dword [edi+EhciCommandReg], 2 test dword [edi+EhciCommandReg], 2
jz .reset_ok jz .reset_ok
@ -515,8 +510,7 @@ end if
test byte [esi+ehci_controller.StructuralParams-sizeof.ehci_controller], 10h test byte [esi+ehci_controller.StructuralParams-sizeof.ehci_controller], 10h
jz @f jz @f
push esi push esi
push 20 movi esi, 20
pop esi
call delay_ms call delay_ms
pop esi pop esi
@@: @@:
@ -676,8 +670,7 @@ proc ehci_kickoff_bios
test al, 1 test al, 1
jz .has_ownership jz .has_ownership
push esi push esi
push 1 movi esi, 1
pop esi
call delay_ms call delay_ms
pop esi pop esi
dec dword [esp] dec dword [esp]
@ -862,8 +855,7 @@ end virtual
push eax ecx push eax ecx
sub edi, ehci_pipe.SoftwarePart sub edi, ehci_pipe.SoftwarePart
xor eax, eax xor eax, eax
push ehci_pipe.SoftwarePart/4 movi ecx, ehci_pipe.SoftwarePart/4
pop ecx
rep stosd rep stosd
pop ecx eax pop ecx eax
; 2. Setup PID in the first TD and make sure that the it is not active. ; 2. Setup PID in the first TD and make sure that the it is not active.
@ -883,8 +875,7 @@ end virtual
and eax, 3FFF0000h and eax, 3FFF0000h
; Use 1 requests per microframe for control/bulk endpoints, ; Use 1 requests per microframe for control/bulk endpoints,
; use value from the endpoint descriptor for periodic endpoints ; use value from the endpoint descriptor for periodic endpoints
push 1 movi edx, 1
pop edx
test [.type], 1 test [.type], 1
jz @f jz @f
mov edx, [.maxpacket] mov edx, [.maxpacket]
@ -1292,8 +1283,7 @@ proc ehci_port_init
@@: @@:
; 3. Call the worker procedure to notify the protocol layer ; 3. Call the worker procedure to notify the protocol layer
; about new EHCI device. It is high-speed. ; about new EHCI device. It is high-speed.
push USB_SPEED_HS movi eax, USB_SPEED_HS
pop eax
call ehci_new_device call ehci_new_device
test eax, eax test eax, eax
jnz .nothing jnz .nothing
@ -1794,8 +1784,7 @@ proc ehci_process_updated_td
; all corresponding bits are set. In this case, return some error code, ; all corresponding bits are set. In this case, return some error code,
; the order is quite arbitrary. ; the order is quite arbitrary.
pop eax ; status pop eax ; status
push USB_STATUS_UNDERRUN movi ecx, USB_STATUS_UNDERRUN
pop ecx
test al, 40h ; not Halted? test al, 40h ; not Halted?
jz .know_error jz .know_error
mov cl, USB_STATUS_OVERRUN mov cl, USB_STATUS_OVERRUN

View File

@ -398,8 +398,7 @@ proc usb_process_wait_lists
jnc @f jnc @f
or byte [esp], 1 shl CONTROL_PIPE or byte [esp], 1 shl CONTROL_PIPE
@@: @@:
push 4 movi edx, 4
pop edx
call usb_process_one_wait_list call usb_process_one_wait_list
jnc @f jnc @f
or byte [esp], 1 shl INTERRUPT_PIPE or byte [esp], 1 shl INTERRUPT_PIPE

View File

@ -253,8 +253,7 @@ end virtual
; 2a. Save registers. ; 2a. Save registers.
push edx push edx
; 2b. Call the allocator. ; 2b. Call the allocator.
push 40 movi eax, 40
pop eax
call malloc call malloc
; 2c. Restore registers. ; 2c. Restore registers.
pop ecx pop ecx

View File

@ -131,8 +131,7 @@ endg
proc create_usb_thread proc create_usb_thread
; 1. Create the thread. ; 1. Create the thread.
push edi push edi
push 1 movi ebx, 1
pop ebx
mov ecx, usb_thread_proc mov ecx, usb_thread_proc
xor edx, edx xor edx, edx
call new_sys_threads call new_sys_threads

View File

@ -351,8 +351,7 @@ end if
lea esi, [eax+ohci_controller.IntEDs+32*sizeof.ohci_static_ep] lea esi, [eax+ohci_controller.IntEDs+32*sizeof.ohci_static_ep]
call get_pg_addr call get_pg_addr
add eax, ohci_controller.IntEDs add eax, ohci_controller.IntEDs
push 32 movi ecx, 32
pop ecx
mov edx, ecx mov edx, ecx
@@: @@:
stosd stosd
@ -429,10 +428,8 @@ end if
; 5c. Save FmInterval register. ; 5c. Save FmInterval register.
pushd [edi+OhciFmIntervalReg] pushd [edi+OhciFmIntervalReg]
; 5d. Issue software reset and wait up to 10ms, checking status every 1 ms. ; 5d. Issue software reset and wait up to 10ms, checking status every 1 ms.
push 1 movi ecx, 1
pop ecx movi edx, 10
push 10
pop edx
mov [edi+OhciCommandStatusReg], ecx mov [edi+OhciCommandStatusReg], ecx
@@: @@:
mov esi, ecx mov esi, ecx
@ -633,14 +630,12 @@ proc ohci_kickoff_bios
; (This should generate SMI, BIOS should release its ownership in SMI handler.) ; (This should generate SMI, BIOS should release its ownership in SMI handler.)
mov dword [eax+OhciCommandStatusReg], 8 mov dword [eax+OhciCommandStatusReg], 8
; 4c. Wait for result no more than 50 ms, checking for status every 1 ms. ; 4c. Wait for result no more than 50 ms, checking for status every 1 ms.
push 50 movi ecx, 50
pop ecx
@@: @@:
test dword [eax+OhciControlReg], edx test dword [eax+OhciControlReg], edx
jz .has_ownership jz .has_ownership
push esi push esi
push 1 movi esi, 1
pop esi
call delay_ms call delay_ms
pop esi pop esi
loop @b loop @b
@ -984,8 +979,7 @@ end virtual
; if so, return an error. ; if so, return an error.
lea edx, [esi + ohci_controller.IntEDs - sizeof.ohci_controller] lea edx, [esi + ohci_controller.IntEDs - sizeof.ohci_controller]
lea eax, [esi + ohci_controller.IntEDs + 32*sizeof.ohci_static_ep - sizeof.ohci_controller] lea eax, [esi + ohci_controller.IntEDs + 32*sizeof.ohci_static_ep - sizeof.ohci_controller]
push 64 movi ecx, 64
pop ecx
call usb1_select_interrupt_list call usb1_select_interrupt_list
test edx, edx test edx, edx
jz .return0 jz .return0

View File

@ -206,8 +206,7 @@ end virtual
sub ecx, 3 sub ecx, 3
cmp ecx, 5 ; maximum 32ms cmp ecx, 5 ; maximum 32ms
jbe @f jbe @f
push 5 movi ecx, 5
pop ecx
@@: @@:
; There are four nested loops, ; There are four nested loops,
; * Loop #4 (the innermost one) calculates the total periodic bandwidth ; * Loop #4 (the innermost one) calculates the total periodic bandwidth
@ -221,10 +220,8 @@ end virtual
; ebx = number of iterations of loop #1 ; ebx = number of iterations of loop #1
; [esp] = delta of counter for loop #3, in bytes ; [esp] = delta of counter for loop #3, in bytes
; [esp+4] = delta between the first group and the target group, in bytes ; [esp+4] = delta between the first group and the target group, in bytes
push 1 movi ebx, 1
pop ebx movi edx, sizeof.ehci_static_ep
push sizeof.ehci_static_ep
pop edx
shl ebx, cl shl ebx, cl
shl edx, cl shl edx, cl
mov eax, 64*sizeof.ehci_static_ep mov eax, 64*sizeof.ehci_static_ep
@ -282,8 +279,7 @@ end virtual
ja @f ja @f
mov [.bandwidth], edi mov [.bandwidth], edi
mov [.target], edx mov [.target], edx
push 1 movi eax, 1
pop eax
shl eax, cl shl eax, cl
mov [.targetsmask], eax mov [.targetsmask], eax
@@: @@:
@ -317,8 +313,7 @@ end virtual
mov ecx, [.targetsmask] mov ecx, [.targetsmask]
add [edx+ehci_static_ep.Bandwidths+ecx*2], ax add [edx+ehci_static_ep.Bandwidths+ecx*2], ax
add edx, ehci_static_ep.SoftwarePart add edx, ehci_static_ep.SoftwarePart
push 1 movi eax, 1
pop eax
shl eax, cl shl eax, cl
pop edi ebx ; restore used registers to be stdcall pop edi ebx ; restore used registers to be stdcall
ret ret
@ -371,8 +366,7 @@ virtual at esp
end virtual end virtual
; 10. Select the best variant. ; 10. Select the best variant.
; edx = S-Mask = bitmask of scheduled microframes ; edx = S-Mask = bitmask of scheduled microframes
push 0x11 movi edx, 0x11
pop edx
cmp ecx, 1 cmp ecx, 1
ja @f ja @f
mov dl, 0x55 mov dl, 0x55

View File

@ -315,8 +315,7 @@ end if
; 2b. Fill first 32 entries. ; 2b. Fill first 32 entries.
inc eax inc eax
inc eax ; set QH bit for uhci_pipe.NextQH inc eax ; set QH bit for uhci_pipe.NextQH
push 32 movi ecx, 32
pop ecx
mov edx, ecx mov edx, ecx
@@: @@:
stosd stosd
@ -416,12 +415,10 @@ end if
mov ax, 2 mov ax, 2
out dx, ax out dx, ax
; 5f. Wait up to 10ms. ; 5f. Wait up to 10ms.
push 10 movi ecx, 10
pop ecx
@@: @@:
push esi push esi
push 1 movi esi, 1
pop esi
call delay_ms call delay_ms
pop esi pop esi
in ax, dx in ax, dx
@ -435,8 +432,7 @@ if 0
; emergency variant for tests - always wait 10 ms ; emergency variant for tests - always wait 10 ms
; wait 10 ms ; wait 10 ms
push esi push esi
push 10 movi esi, 10
pop esi
call delay_ms call delay_ms
pop esi pop esi
; clear reset signal ; clear reset signal
@ -998,8 +994,7 @@ end if
; * if several non-fatal errors have occured during transaction retries, ; * if several non-fatal errors have occured during transaction retries,
; all corresponding bits are set. In this case, return some error code, ; all corresponding bits are set. In this case, return some error code,
; the order is quite arbitrary. ; the order is quite arbitrary.
push USB_STATUS_UNDERRUN movi ecx, USB_STATUS_UNDERRUN
pop ecx
test al, 1 shl (22-16) ; not Stalled? test al, 1 shl (22-16) ; not Stalled?
jz .know_error jz .know_error
mov cl, USB_STATUS_OVERRUN mov cl, USB_STATUS_OVERRUN
@ -1260,8 +1255,7 @@ proc uhci_port_reset_done
; 2. Status bits in UHCI are invalid during reset signalling. ; 2. Status bits in UHCI are invalid during reset signalling.
; Wait a millisecond while status bits become valid again. ; Wait a millisecond while status bits become valid again.
push esi push esi
push 1 movi esi, 1
pop esi
call delay_ms call delay_ms
pop esi pop esi
; 3. ConnectStatus bit is zero during reset and becomes 1 during step 2; ; 3. ConnectStatus bit is zero during reset and becomes 1 during step 2;
@ -1458,8 +1452,7 @@ end virtual
; if so, return an error. ; if so, return an error.
lea edx, [esi + uhci_controller.IntEDs - sizeof.uhci_controller] lea edx, [esi + uhci_controller.IntEDs - sizeof.uhci_controller]
lea eax, [esi + uhci_controller.IntEDs + 32*sizeof.uhci_static_ep - sizeof.uhci_controller] lea eax, [esi + uhci_controller.IntEDs + 32*sizeof.uhci_static_ep - sizeof.uhci_controller]
push 64 movi ecx, 64
pop ecx
call usb1_select_interrupt_list call usb1_select_interrupt_list
test edx, edx test edx, edx
jz .return0 jz .return0

View File

@ -504,8 +504,7 @@ terminate: ; terminate application
mov eax, [SLOT_BASE+edi*8+APPDATA.debugger_slot] mov eax, [SLOT_BASE+edi*8+APPDATA.debugger_slot]
test eax, eax test eax, eax
jz .nodebug jz .nodebug
push 8 movi ecx, 8
pop ecx
push dword [CURRENT_TASK+edi+TASKDATA.pid]; PID push dword [CURRENT_TASK+edi+TASKDATA.pid]; PID
push 2 push 2
call debugger_notify call debugger_notify

View File

@ -82,8 +82,7 @@ proc timer_hs stdcall uses ebx, deltaStart:dword, interval:dword, \
timerFunc:dword, userData:dword timerFunc:dword, userData:dword
; 1. Allocate memory for the TIMER structure. ; 1. Allocate memory for the TIMER structure.
; 1a. Call the allocator. ; 1a. Call the allocator.
push sizeof.TIMER movi eax, sizeof.TIMER
pop eax
call malloc call malloc
; 1b. If allocation failed, return (go to 5) with eax = 0. ; 1b. If allocation failed, return (go to 5) with eax = 0.
test eax, eax test eax, eax

View File

@ -19,6 +19,20 @@
; __DEBUG__ equ 1 ; __DEBUG__ equ 1
; __DEBUG_LEVEL__ equ 5 ; __DEBUG_LEVEL__ equ 5
; MOV Immediate.
; Useful for things like movi eax,10:
; shorter than regular mov, but slightly slower,
; do not use it in performance-critical places.
macro movi dst, imm
{
if imm >= -0x80 & imm <= 0x7F
push imm
pop dst
else
mov dst, imm
end if
}
macro debug_func name { macro debug_func name {
if used name if used name
name@of@func equ name name@of@func equ name
@ -273,8 +287,7 @@ debug_beginf
call fdo_debug_outchar call fdo_debug_outchar
pop eax pop eax
@@: @@:
push 10 movi ecx, 10
pop ecx
push -'0' push -'0'
.l1: .l1:
xor edx, edx xor edx, edx

View File

@ -234,8 +234,7 @@ AddDevice:
; 8 bytes for a packet and 8 bytes for previous packet, used by a keyboard. ; 8 bytes for a packet and 8 bytes for previous packet, used by a keyboard.
; 9. Initialize device data. ; 9. Initialize device data.
mov [ebx+device_data.intpipe], eax mov [ebx+device_data.intpipe], eax
push 8 movi ecx, 8
pop ecx
cmp edx, ecx cmp edx, ecx
jb @f jb @f
mov edx, ecx mov edx, ecx
@ -364,8 +363,7 @@ keyboard_data_ready:
jb .controlloop jb .controlloop
.nocontrol: .nocontrol:
; 3. Initialize before loop for normal keys. esi = index. ; 3. Initialize before loop for normal keys. esi = index.
push 2 movi esi, 2
pop esi
.normalloop: .normalloop:
; 4. Process one key which was pressed in the previous packet. ; 4. Process one key which was pressed in the previous packet.
; 4a. Get the next pressed key from the previous packet. ; 4a. Get the next pressed key from the previous packet.
@ -486,8 +484,7 @@ keyboard_data_ready:
; Auxiliary procedure for keyboard_data_ready. ; Auxiliary procedure for keyboard_data_ready.
haskey: haskey:
push 2 movi edx, 2
pop edx
@@: @@:
cmp byte [ecx+edx], al cmp byte [ecx+edx], al
jz @f jz @f

View File

@ -298,8 +298,7 @@ virtual at esp
.UserData dd ? ; request_queue_item.UserData .UserData dd ? ; request_queue_item.UserData
end virtual end virtual
; 1. Allocate the memory for the request description. ; 1. Allocate the memory for the request description.
push request_queue_item.sizeof movi eax, request_queue_item.sizeof
pop eax
call Kmalloc call Kmalloc
test eax, eax test eax, eax
jnz @f jnz @f
@ -1004,10 +1003,8 @@ proc inquiry_callback
; 4. Thus, create a temporary kernel thread which would do it. ; 4. Thus, create a temporary kernel thread which would do it.
mov edx, [esp+8] mov edx, [esp+8]
push ebx ecx push ebx ecx
push 51 movi eax, 51
pop eax movi ebx, 1
push 1
pop ebx
mov ecx, new_disk_thread mov ecx, new_disk_thread
; edx = parameter ; edx = parameter
int 0x40 int 0x40
@ -1069,8 +1066,7 @@ end virtual
cmp [edx+usb_unit_data.UnitReadyAttempts], 3 cmp [edx+usb_unit_data.UnitReadyAttempts], 3
jz @f jz @f
push ecx edx esi push ecx edx esi
push 10 movi esi, 10
pop esi
call Sleep call Sleep
pop esi edx ecx pop esi edx ecx
stdcall queue_request, ecx, test_unit_ready_req, 0, test_unit_ready_callback, edx stdcall queue_request, ecx, test_unit_ready_req, 0, test_unit_ready_callback, edx
@ -1124,8 +1120,7 @@ end virtual
mov byte [edi-1], 'd' mov byte [edi-1], 'd'
push eax push eax
push -'0' push -'0'
push 10 movi ecx, 10
pop ecx
@@: @@:
cdq cdq
div ecx div ecx

View File

@ -278,8 +278,7 @@ debug_beginf
call fdo_debug_outchar call fdo_debug_outchar
pop eax pop eax
@@: @@:
push 10 movi ecx, 10
pop ecx
push -'0' push -'0'
.l1: .l1:
xor edx, edx xor edx, edx

View File

@ -1311,8 +1311,7 @@ fs_FloppyRewrite:
push ecx edi push ecx edi
mov ecx, 8 mov ecx, 8
repnz scasb repnz scasb
push 1 movi eax, 1 ; 1 entry
pop eax ; 1 entry
jnz .notilde jnz .notilde
; we need ceil(strlen(esi)/13) additional entries = floor((strlen(esi)+12+13)/13) total ; we need ceil(strlen(esi)/13) additional entries = floor((strlen(esi)+12+13)/13) total
xor eax, eax xor eax, eax
@ -1822,8 +1821,7 @@ floppy_extend_file:
jb @b jb @b
.fat_err: .fat_err:
pop ecx pop ecx
push ERROR_FAT_TABLE movi eax, ERROR_FAT_TABLE
pop eax
stc stc
ret ret
@@: @@:
@ -1885,8 +1883,7 @@ floppy_extend_file:
pop edi ecx pop edi ecx
pop esi edx pop esi edx
stc stc
push ERROR_DISK_FULL movi eax, ERROR_DISK_FULL
pop eax
ret ret
;---------------------------------------------------------------- ;----------------------------------------------------------------

View File

@ -167,8 +167,7 @@ fat_create_partition:
; in the normal operation, let's hope for the best and allocate data now; if ; in the normal operation, let's hope for the best and allocate data now; if
; it will prove wrong, just deallocate it. ; it will prove wrong, just deallocate it.
push ebx push ebx
push sizeof.FAT movi eax, sizeof.FAT
pop eax
call malloc call malloc
pop ebx pop ebx
test eax, eax test eax, eax
@ -972,8 +971,7 @@ fs_HdReadFolder:
jz ntfs_HdReadFolder jz ntfs_HdReadFolder
cmp [fs_type], 2 cmp [fs_type], 2
jz ext2_HdReadFolder jz ext2_HdReadFolder
push ERROR_UNSUPPORTED_FS movi eax, ERROR_UNSUPPORTED_FS
pop eax
or ebx, -1 or ebx, -1
ret ret
@@: @@:
@ -1659,8 +1657,7 @@ fat_Rewrite:
push ecx edi push ecx edi
mov ecx, 8 mov ecx, 8
repnz scasb repnz scasb
push 1 movi eax, 1 ; 1 entry
pop eax ; 1 entry
jnz .notilde jnz .notilde
; we need ceil(strlen(esi)/13) additional entries = floor((strlen(esi)+12+13)/13) total ; we need ceil(strlen(esi)/13) additional entries = floor((strlen(esi)+12+13)/13) total
xor eax, eax xor eax, eax
@ -2362,8 +2359,7 @@ hd_extend_file:
jmp .device_err2 jmp .device_err2
.disk_full: .disk_full:
pop eax edx esi pop eax edx esi
push ERROR_DISK_FULL movi eax, ERROR_DISK_FULL
pop eax
stc stc
ret ret
@ -2390,8 +2386,7 @@ fs_HdSetFileEnd:
jz ntfs_HdSetFileEnd jz ntfs_HdSetFileEnd
cmp [fs_type], 2 cmp [fs_type], 2
jz ext2_HdSetFileEnd jz ext2_HdSetFileEnd
push ERROR_UNKNOWN_FS movi eax, ERROR_UNKNOWN_FS
pop eax
ret ret
@@: @@:
sub ebx, 4 sub ebx, 4
@ -2566,8 +2561,7 @@ fat_SetFileEnd:
pop eax ecx eax edi pop eax ecx eax edi
call update_disk call update_disk
call fat_unlock call fat_unlock
push ERROR_DEVICE movi eax, ERROR_DEVICE
pop eax
ret ret
@@: @@:
; we will zero data at the end of last sector - remember it ; we will zero data at the end of last sector - remember it
@ -2640,8 +2634,7 @@ fat_SetFileEnd:
pop eax ecx eax edi pop eax ecx eax edi
call update_disk call update_disk
call fat_unlock call fat_unlock
push ERROR_FAT_TABLE movi eax, ERROR_FAT_TABLE
pop eax
ret ret
fs_HdGetFileInfo: fs_HdGetFileInfo:
@ -2771,8 +2764,7 @@ fs_HdDelete:
jz ntfs_HdDelete jz ntfs_HdDelete
cmp [fs_type], 2 cmp [fs_type], 2
jz ext2_HdDelete jz ext2_HdDelete
push ERROR_UNKNOWN_FS movi eax, ERROR_UNKNOWN_FS
pop eax
ret ret
@@: @@:
sub ebx, 4 sub ebx, 4
@ -2866,23 +2858,20 @@ fat_Delete:
.err2: .err2:
pop edi pop edi
call fat_unlock call fat_unlock
push ERROR_DEVICE movi eax, ERROR_DEVICE
pop eax
ret ret
.error_fat: .error_fat:
popad popad
pop edi pop edi
call fat_unlock call fat_unlock
push ERROR_FAT_TABLE movi eax, ERROR_FAT_TABLE
pop eax
ret ret
.notempty: .notempty:
popad popad
.access_denied2: .access_denied2:
pop edi pop edi
call fat_unlock call fat_unlock
push ERROR_ACCESS_DENIED movi eax, ERROR_ACCESS_DENIED
pop eax
ret ret
.empty: .empty:
popad popad

View File

@ -1139,15 +1139,13 @@ ntfs_HdRead:
cmp byte [esi], 0 cmp byte [esi], 0
jnz @f jnz @f
or ebx, -1 or ebx, -1
push ERROR_ACCESS_DENIED movi eax, ERROR_ACCESS_DENIED
pop eax
ret ret
@@: @@:
call ntfs_find_lfn call ntfs_find_lfn
jnc .found jnc .found
or ebx, -1 or ebx, -1
push ERROR_FILE_NOT_FOUND movi eax, ERROR_FILE_NOT_FOUND
pop eax
ret ret
.found: .found:
mov [ntfs_cur_attr], 0x80 ; $DATA mov [ntfs_cur_attr], 0x80 ; $DATA
@ -1156,8 +1154,7 @@ ntfs_HdRead:
call ntfs_read_attr call ntfs_read_attr
jnc @f jnc @f
or ebx, -1 or ebx, -1
push ERROR_ACCESS_DENIED movi eax, ERROR_ACCESS_DENIED
pop eax
ret ret
@@: @@:
pushad pushad
@ -1171,8 +1168,7 @@ ntfs_HdRead:
popad popad
xor ebx, ebx xor ebx, ebx
.eof: .eof:
push ERROR_END_OF_FILE movi eax, ERROR_END_OF_FILE
pop eax
ret ret
@@: @@:
mov eax, [ebx] mov eax, [ebx]
@ -1349,8 +1345,7 @@ ntfs_HdReadFolder:
.nomem: .nomem:
popad popad
or ebx, -1 or ebx, -1
push 12 movi eax, 12
pop eax
ret ret
@@: @@:
mov [ntfs_data.cur_index_buf], eax mov [ntfs_data.cur_index_buf], eax
@ -1804,14 +1799,12 @@ ntfs_HdDelete:
ntfs_HdGetFileInfo: ntfs_HdGetFileInfo:
cmp byte [esi], 0 cmp byte [esi], 0
jnz @f jnz @f
push 2 movi eax, 2
pop eax
ret ret
@@: @@:
call ntfs_find_lfn call ntfs_find_lfn
jnc .doit jnc .doit
push ERROR_FILE_NOT_FOUND movi eax, ERROR_FILE_NOT_FOUND
pop eax
cmp [hd_error], 0 cmp [hd_error], 0
jz @f jz @f
mov al, 11 mov al, 11

View File

@ -139,8 +139,7 @@ endg
register_keyboard: register_keyboard:
push ebx push ebx
push sizeof.KEYBOARD movi eax, sizeof.KEYBOARD
pop eax
call malloc call malloc
test eax, eax test eax, eax
jz .nothing jz .nothing

View File

@ -5567,8 +5567,7 @@ system_shutdown: ; shut down the system
ret ret
@@: @@:
call stop_all_services call stop_all_services
push 3 ; stop playing cd movi eax, 3
pop eax
call sys_cd_audio call sys_cd_audio
yes_shutdown_param: yes_shutdown_param:
@ -5576,8 +5575,7 @@ yes_shutdown_param:
if ~ defined extended_primary_loader if ~ defined extended_primary_loader
mov eax, kernel_file ; load kernel.mnt to 0x7000:0 mov eax, kernel_file ; load kernel.mnt to 0x7000:0
push 12 movi esi, 12
pop esi
xor ebx, ebx xor ebx, ebx
or ecx, -1 or ecx, -1
mov edx, OS_BASE+0x70000 mov edx, OS_BASE+0x70000

View File

@ -117,3 +117,16 @@ macro list_del entry
mov [ecx+list_fd], edx mov [ecx+list_fd], edx
} }
; MOV Immediate.
; Useful for things like movi eax,10:
; shorter than regular mov, but slightly slower,
; do not use it in performance-critical places.
macro movi dst, imm
{
if imm >= -0x80 & imm <= 0x7F
push imm
pop dst
else
mov dst, imm
end if
}

View File

@ -160,8 +160,7 @@ macro TCP_init {
init_queue TCP_queue init_queue TCP_queue
push 1 movi ebx, 1
pop ebx
mov ecx, TCP_process_input mov ecx, TCP_process_input
call new_sys_threads call new_sys_threads

View File

@ -50,8 +50,7 @@ real_start:
; get file system information ; get file system information
; scan for Primary Volume Descriptor ; scan for Primary Volume Descriptor
db 66h db 66h
push 10h-1 movi eax, 10h-1
pop eax
pvd_scan_loop: pvd_scan_loop:
mov cx, 1 mov cx, 1
inc eax inc eax