diff --git a/reactos/lib/ntdll/nasm/fixasm.bat b/reactos/lib/ntdll/nasm/fixasm.bat new file mode 100755 index 00000000000..6dd288160a1 --- /dev/null +++ b/reactos/lib/ntdll/nasm/fixasm.bat @@ -0,0 +1,26 @@ +@echo off +echo fix temp slov for to make ntdll use this asm code insted of the c code +echo 1. copy makefile-asm ../makefile + +cd rtl +del *.o +del *.d +del i386_RtlCompareMemory +del i386_RtlCompareMemoryUlong +del i386_RtlFillMemory +del i386_RtlFillMemoryUlong +del i386_RtlMoveMemory +del i386_RtlRandom +del i386_RtlZeroMemory +cd .. + +rem nasmw -f coff i386_RtlCompareMemory.asm +rem nasmw -f coff i386_RtlCompareMemoryUlong.asm +rem nasmw -f coff i386_RtlFillMemory.asm +rem nasmw -f coff i386_RtlFillMemoryUlong.asm +rem nasmw -f coff i386_RtlMoveMemory.asm +rem nasmw -f coff i386_RtlRandom.asm +rem nasmw -f coff i386_RtlZeroMemory.asm + + + diff --git a/reactos/lib/ntdll/nasm/makefile-asm b/reactos/lib/ntdll/nasm/makefile-asm new file mode 100644 index 00000000000..a37df6d045c --- /dev/null +++ b/reactos/lib/ntdll/nasm/makefile-asm @@ -0,0 +1,113 @@ +# $Id: makefile-asm,v 1.1 2003/07/30 19:06:55 greatlrd Exp $ + +PATH_TO_TOP = ../.. + +TARGET_BOOTSTRAP = yes + +TARGET_TYPE = dynlink + +TARGET_NAME = ntdll + +TARGET_CFLAGS = -g -D__NTDLL__ + +TARGET_ASFLAGS = -I $(PATH_TO_TOP)/include + +TARGET_LFLAGS = -Wl,--file-alignment,0x1000 \ + -Wl,--section-alignment,0x1000 \ + -nostartfiles -nostdlib + +TARGET_SDKLIBS = string.a rosrtl.a + +TARGET_GCCLIBS = gcc + +TARGET_BASE = 0x77f60000 + +TARGET_PATH = def + +TARGET_ENTRY = 0x0 + +CSR_OBJECTS = csr/lpc.o csr/capture.o csr/probe.o csr/thread.o + +DBG_OBJECTS = dbg/brkpoint.o dbg/debug.o dbg/print.o #dbg/winedbg.o + +LDR_OBJECTS = \ + ldr/entry.o \ + ldr/res.o \ + ldr/startup.o \ + ldr/utils.o + +RTL_I386_OBJECTS = \ + rtl/i386/alldiv.o \ + rtl/i386/allmul.o \ + rtl/i386/allrem.o \ + rtl/i386/allshl.o \ + rtl/i386/allshr.o \ + rtl/i386/aulldiv.o \ + rtl/i386/aullrem.o \ + rtl/i386/aullshr.o \ + rtl/i386/chkstk.o \ + rtl/i386/exception.o \ + rtl/i386/except.o \ + rtl/i386/float.o \ + rtl/i386/ftol.o + +RTL_OBJECTS = rtl/critical.o rtl/error.o rtl/heap.o rtl/largeint.o \ + rtl/math.o \ + nasm/i386_RtlCompareMemory.o nasm/i386_RtlCompareMemoryUlong.o \ + nasm/i386_RtlFillMemory.o \ + nasm/i386_RtlFillMemoryUlong.o nasm/i386_RtlMoveMemory.o \ + nasm/i386_RtlRandom.o nasm/i386_RtlZeroMemory.o \ + rtl/nls.o rtl/process.o rtl/sd.o \ + rtl/thread.o rtl/unicode.o rtl/env.o rtl/path.o rtl/ppb.o \ + rtl/bitmap.o rtl/time.o rtl/acl.o rtl/sid.o rtl/image.o \ + rtl/access.o rtl/apc.o rtl/callback.o rtl/luid.o rtl/misc.o \ + rtl/registry.o rtl/exception.o rtl/intrlck.o rtl/resource.o \ + rtl/handle.o rtl/atom.o rtl/message.o rtl/timezone.o \ + rtl/propvar.o rtl/security.o rtl/dos8dot3.o rtl/compress.o \ + rtl/encode.o rtl/teb.o + +STDIO_OBJECTS = stdio/sprintf.o stdio/swprintf.o + +STDLIB_OBJECTS = stdlib/abs.o stdlib/atoi.o stdlib/atoi64.o stdlib/atol.o \ + stdlib/itoa.o stdlib/itow.o stdlib/labs.o stdlib/splitp.o \ + stdlib/strtol.o stdlib/strtoul.o stdlib/wcstol.o \ + stdlib/wcstoul.o stdlib/wtoi.o stdlib/wtoi64.o stdlib/wtol.o \ + stdlib/mbstowcs.o stdlib/wcstombs.o + +STRING_OBJECTS = string/ctype.o \ + string/memicmp.o\ + string/stricmp.o \ + string/strlwr.o \ + string/strnicmp.o \ + string/strpbrk.o \ + string/strstr.o string/strupr.o string/wstring.o + +ARCH_OBJECTS = \ + $(RTL_I386_OBJECTS) + +TARGET_OBJECTS = \ + napi.o \ + $(ARCH_OBJECTS) \ + $(CSR_OBJECTS) \ + $(DBG_OBJECTS) \ + $(LDR_OBJECTS) \ + $(RTL_OBJECTS) \ + $(STDIO_OBJECTS) \ + $(STDLIB_OBJECTS) \ + $(STRING_OBJECTS) \ + stubs/stubs.o + +DEP_OBJECTS = $(TARGET_OBJECTS) +DEP_EXCLUDE_FILTER = napi.% + +include $(PATH_TO_TOP)/rules.mak + +include $(TOOLS_PATH)/helper.mk + +include $(TOOLS_PATH)/depend.mk + +%/TAGS: + etags -o $(@D)/TAGS $(@D)/\*.c + +etags: csr/TAGS dbg/TAGS ldr/TAGS main/TAGS rtl/TAGS stdio/TAGS stdlib/TAGS string/TAGS stubs/TAGS + etags -i csr/TAGS -i dbg/TAGS -i ldr/TAGS -i main/TAGS -i rtl/TAGS -i stdio/TAGS -i stdlib/TAGS -i string/TAGS -i stubs/TAGS diff --git a/reactos/lib/ntdll/nasm/readme.txt b/reactos/lib/ntdll/nasm/readme.txt new file mode 100644 index 00000000000..40beed716b9 --- /dev/null +++ b/reactos/lib/ntdll/nasm/readme.txt @@ -0,0 +1,52 @@ + +This is Intel i386 or higher asm code version of ntdll.dll +The minium cpu req by reactos are : 486. + +The asm src in this folder need nasm to be compile with. + + +1. Rename reactos/lib/ntdll/makefile to reactos/lib/ntdll/makefile.c + or make a backup up of it. + (it contain the C code version of ntdll makefile) + + +2. Copy reactos/lib/ntdll/nasm/makefile-asm to reactos/lib/ntdll/makefile + (it contain the asm verison of ntdll makefile, I need to change some + part to get the asm version be in use insted of the c version) + +3. Now run reactos/make so u get the asm version of ntdll + + + + + +Hope everyone like this asm optimze version. +but for momment are only thing optimze are + +ntdll/rtl/mem.c +----------------------------------------- +RtlCompareMemory +RtlCompareMemoryUlong +RtlFillMemoryUlong +RtlMoveMemory +RtlZeroMemory + +RtlFillMemory +(can make it lite faster not maxium optimze yet) + + + +ntdll/rtl/RtlRandom.c +----------------------------------------- +RtlRandom +RtlUniform +SavedValue + + + + +info about ntdll/nasm/fixasm.bat +----------------------------------------- +delete all file that are not src or bat file +in the folder ntdll/nasm/ +