Jump to content

Small application's?


Skitty
 Share

Recommended Posts

Why do want to use FASM from SciTE when it comes with an editor already? Although it may be a little light on features and the cursor being allowed beyond the end of lines is a bit old school, I found it helped.

Comparing assembly to batch scripts is a bit off though :) .

Link to comment
Share on other sites

  • Start SciTE.
  • Click "Help" on the menu bar.
  • Click "Help" in Help submenu.
  • ???
  • Profit.
ohh, I didn't notice the extra scite help chm. thanks.

But how do I tell scite where FASM is so it can use it when the compile button is used?

# Define SciTE settings for Assembler files (IA32 MASM and NASM)
# Originally by Black Horus blackhorus@gmx.net 2002
# Updated by Kein-Hong Man mkh@pl.jaring.my 2003-10

# Masm files
file.patterns.asm=*.asm
filter.asm=Assembler (asm)|$(file.patterns.asm)|

lexer.$(file.patterns.asm)=asm

# these keywords are taken from the masm book (v6.13)
# updated with Intel Pentium 4, MMX, SSE, SSE2 instructions from NASM
#   (note that some are undocumented instructions)

cpu_instruction=aaa aad aam aas adc add and call cbw \
    clc cld cli cmc cmp cmps cmpsb cmpsw cwd daa das dec div esc hlt \
    idiv imul in inc int into iret ja jae jb jbe jc jcxz je jg jge jl \
    jle jmp jna jnae jnb jnbe jnc jne jng jnge jnl jnle jno jnp jns \
    jnz jo jp jpe jpo js jz lahf lds lea les lods lodsb lodsw loop \
    loope loopew loopne loopnew loopnz loopnzw loopw loopz loopzw \
    mov movs movsb movsw mul neg nop not or out pop popf push pushf \
    rcl rcr ret retf retn rol ror sahf sal sar sbb scas scasb scasw \
    shl shr stc std sti stos stosb stosw sub test wait xchg xlat \
    xlatb xor \
    bound enter ins insb insw leave outs outsb outsw popa pusha pushw \
    arpl lar lsl sgdt sidt sldt smsw str verr verw clts lgdt lidt lldt lmsw ltr \
    bsf bsr bt btc btr bts cdq cmpsd cwde insd iretd iretdf  iretf \
    jecxz lfs lgs lodsd loopd  looped  loopned  loopnzd  loopzd  lss \
    movsd movsx movzx outsd popad popfd pushad pushd  pushfd scasd seta \
    setae setb setbe setc sete setg setge setl setle setna setnae setnb \
    setnbe setnc setne setng setnge setnl setnle setno setnp setns \
    setnz seto setp setpe setpo sets setz shld shrd stosd \
    bswap cmpxchg invd  invlpg  wbinvd  xadd \
    lock rep repe repne repnz repz

# these are mostly non-MMX/SSE/SSE2 486+ instructions

cpu_instruction2=cflush cpuid emms femms \
    cmovo cmovno cmovb cmovc cmovnae cmovae cmovnb cmovnc \
    cmove cmovz cmovne cmovnz cmovbe cmovna cmova cmovnbe \
    cmovs cmovns cmovp cmovpe cmovnp cmovpo cmovl cmovnge \
    cmovge cmovnl cmovle cmovng cmovg cmovnle \
    cmpxchg486 cmpxchg8b  \
    loadall loadall286 ibts icebp int1 int3 int01 int03 iretw \
    popaw popfw pushaw pushfw rdmsr rdpmc rdshr rdtsc \
    rsdc rsldt rsm rsts salc smi smint smintold svdc svldt svts \
    syscall sysenter sysexit sysret ud0 ud1 ud2 umov xbts wrmsr wrshr

# fpu instructions, updated for 486+

fpu_instruction=f2xm1 fabs fadd faddp fbld fbstp fchs fclex fcom fcomp fcompp fdecstp \
    fdisi fdiv fdivp fdivr fdivrp feni ffree fiadd ficom ficomp fidiv \
    fidivr fild fimul fincstp finit fist fistp fisub fisubr fld fld1 \
    fldcw fldenv fldenvw fldl2e fldl2t fldlg2 fldln2 fldpi fldz fmul \
    fmulp fnclex fndisi fneni fninit fnop fnsave fnsavew fnstcw fnstenv \
    fnstenvw fnstsw fpatan fprem fptan frndint frstor frstorw fsave \
    fsavew fscale fsqrt fst fstcw fstenv fstenvw fstp fstsw fsub fsubp \
    fsubr fsubrp ftst fwait fxam fxch fxtract fyl2x fyl2xp1 \
    fsetpm fcos fldenvd fnsaved fnstenvd fprem1 frstord fsaved fsin fsincos \
    fstenvd fucom fucomp fucompp fcomi fcomip ffreep \
    fcmovb fcmove fcmovbe fcmovu fcmovnb fcmovne fcmovnbe fcmovnu

# these are MMX, SSE, SSE2 instructions

ext_instruction=addpd addps addsd addss andpd andps andnpd andnps \
    cmpeqpd cmpltpd cmplepd cmpunordpd cmpnepd cmpnltpd cmpnlepd cmpordpd \
    cmpeqps cmpltps cmpleps cmpunordps cmpneps cmpnltps cmpnleps cmpordps \
    cmpeqsd cmpltsd cmplesd cmpunordsd cmpnesd cmpnltsd cmpnlesd cmpordsd \
    cmpeqss cmpltss cmpless cmpunordss cmpness cmpnltss cmpnless cmpordss \
    comisd comiss cvtdq2pd cvtdq2ps cvtpd2dq cvtpd2pi cvtpd2ps \
    cvtpi2pd cvtpi2ps cvtps2dq cvtps2pd cvtps2pi cvtss2sd cvtss2si \
    cvtsd2si cvtsd2ss cvtsi2sd cvtsi2ss \
    cvttpd2dq cvttpd2pi cvttps2dq cvttps2pi cvttsd2si cvttss2si \
    divpd divps divsd divss fxrstor fxsave ldmxscr lfence mfence \
    maskmovdqu maskmovdq maxpd maxps paxsd maxss minpd minps minsd minss \
    movapd movaps movdq2q movdqa movdqu movhlps movhpd movhps movd movq \
    movlhps movlpd movlps movmskpd movmskps movntdq movnti movntpd movntps \
    movntq movq2dq movsd movss movupd movups mulpd mulps mulsd mulss \
    orpd orps packssdw packsswb packuswb paddb paddsb paddw paddsw \
    paddd paddsiw paddq paddusb paddusw pand pandn pause paveb pavgb pavgw \
    pavgusb pdistib pextrw pcmpeqb pcmpeqw pcmpeqd pcmpgtb pcmpgtw pcmpgtd \
    pf2id pf2iw pfacc pfadd pfcmpeq pfcmpge pfcmpgt pfmax pfmin pfmul \
    pmachriw pmaddwd pmagw pmaxsw pmaxub pminsw pminub pmovmskb \
    pmulhrwc pmulhriw pmulhrwa pmulhuw pmulhw pmullw pmuludq \
    pmvzb pmvnzb pmvlzb pmvgezb pfnacc pfpnacc por prefetch prefetchw \
    prefetchnta prefetcht0 prefetcht1 prefetcht2 pfrcp pfrcpit1 pfrcpit2 \
    pfrsqit1 pfrsqrt pfsub pfsubr pi2fd pf2iw pinsrw psadbw pshufd \
    pshufhw pshuflw pshufw psllw pslld psllq pslldq psraw psrad \
    psrlw psrld psrlq psrldq psubb psubw psubd psubq psubsb psubsw \
    psubusb psubusw psubsiw pswapd punpckhbw punpckhwd punpckhdq punpckhqdq \
    punpcklbw punpcklwd punpckldq punpcklqdq pxor rcpps rcpss \
    rsqrtps rsqrtss sfence shufpd shufps sqrtpd sqrtps sqrtsd sqrtss \
    stmxcsr subpd subps subsd subss ucomisd ucomiss \
    unpckhpd unpckhps unpcklpd unpcklps xorpd xorps

register=ah al ax bh bl bp bx ch cl cr0 cr2 cr3 cr4 cs \
    cx dh di dl dr0 dr1 dr2 dr3 dr6 dr7 ds dx eax ebp ebx ecx edi edx \
    es esi esp fs gs si sp ss st tr3 tr4 tr5 tr6 tr7 \
    st0 st1 st2 st3 st4 st5 st6 st7 mm0 mm1 mm2 mm3 mm4 mm5 mm6 mm7 \
    xmm0 xmm1 xmm2 xmm3 xmm4 xmm5 xmm6 xmm7

# masm directives

directive=.186 .286 .286c .286p .287 .386 .386c .386p .387 .486 .486p \
    .8086 .8087 .alpha .break .code .const .continue .cref .data .data?  \
    .dosseg .else .elseif .endif .endw .err .err1 .err2 .errb \
    .errdef .errdif .errdifi .erre .erridn .erridni .errnb .errndef \
    .errnz .exit .fardata .fardata? .if .lall .lfcond .list .listall \
    .listif .listmacro .listmacroall  .model .no87 .nocref .nolist \
    .nolistif .nolistmacro .radix .repeat .sall .seq .sfcond .stack \
    .startup .tfcond .type .until .untilcxz .while .xall .xcref \
    .xlist alias align assume catstr comm comment db dd df dosseg dq \
    dt dup dw echo else elseif elseif1 elseif2 elseifb elseifdef elseifdif \
    elseifdifi elseife elseifidn elseifidni elseifnb elseifndef end \
    endif endm endp ends eq equ even exitm extern externdef extrn for \
    forc ge goto group gt high highword if if1 if2 ifb ifdef ifdif \
    ifdifi ife  ifidn ifidni ifnb ifndef include includelib instr invoke \
    irp irpc label le length lengthof local low lowword lroffset \
    lt macro mask mod .msfloat name ne offset opattr option org %out \
    page popcontext proc proto ptr public purge pushcontext record \
    repeat rept seg segment short size sizeof sizestr struc struct \
    substr subtitle subttl textequ this title type typedef union while width

directive_operand=$ ? @b @f addr basic byte c carry? dword \
    far far16 fortran fword near near16 overflow? parity? pascal qword  \
    real4  real8 real10 sbyte sdword sign? stdcall sword syscall tbyte \
    vararg word zero? flat near32 far32 \
    abs all assumes at casemap common compact \
    cpu dotname emulator epilogue error export expr16 expr32 farstack flat \
    forceframe huge language large listing ljmp loadds m510 medium memory \
    nearstack nodotname noemulator nokeyword noljmp nom510 none nonunique \
    nooldmacros nooldstructs noreadonly noscoped nosignextend nothing \
    notpublic oldmacros oldstructs os_dos para private prologue radix \
    readonly req scoped setif2 smallstack tiny use16 use32 uses \

# nasm directives, mostly complete, does not parse properly
# the following: %!<env>, %%, %+, %+n %-n, %{n}

directive_nasm=db dw dd dq dt resb resw resd resq rest incbin equ times \
    %define %idefine %xdefine %xidefine %undef %assign %iassign \
    %strlen %substr %macro %imacro %endmacro %rotate .nolist \
    %if %elif %else %endif %ifdef %ifndef %elifdef %elifndef \
    %ifmacro %ifnmacro %elifmacro %elifnmacro %ifctk %ifnctk %elifctk %elifnctk \
    %ifidn %ifnidn %elifidn %elifnidn %ifidni %ifnidni %elifidni %elifnidni \
    %ifid %ifnid %elifid %elifnid %ifstr %ifnstr %elifstr %elifnstr \
    %ifnum %ifnnum %elifnum %elifnnum %error %rep %endrep %exitrep \
    %include %push %pop %repl struct endstruc istruc at iend align alignb \
    %arg %stacksize %local %line \
    bits use16 use32 section absolute extern global common cpu org \
    section group import export

directive_operand_nasm=a16 a32 o16 o32 byte word dword nosplit $ $ seq wrt \
    flat large small .text .data .bss near far \
    %0 %1 %2 %3 %4 %5 %6 %7 %8 %9


keywords.$(file.patterns.asm)=$(cpu_instruction) $(cpu_instruction2)
keywords2.$(file.patterns.asm)=$(fpu_instruction)
keywords3.$(file.patterns.asm)=$(register)
keywords4.$(file.patterns.asm)=$(directive) $(directive_nasm)
keywords5.$(file.patterns.asm)=$(directive_operand) $(directive_operand_nasm)
keywords6.$(file.patterns.asm)=$(ext_instruction)

comment.block.asm=;


# Assembler Styles
style.asm.32=fore:#808080,font:Verdana,size:8
# Default
style.asm.0=
# Comment
style.asm.1=fore:#adadad
#$(colour.code.comment.line),font:Comic Sans MS,size:8
# Number
style.asm.2=fore:#ff0000
# String
style.asm.3=$(colour.string)
# Operator
style.asm.4=$(colour.operator),bold
# Identifier
style.asm.5=
# CPU instruction
style.asm.6=$(colour.keyword),bold
#fore:#0000ff
# FPU instruction
style.asm.7=fore:#0000ff
# Register
style.asm.8=fore:#46aa03,bold
# assembler Directive
style.asm.9=fore:#0000ff
# assembler Directive Operand
style.asm.10=fore:#0000ff
# Comment block (GNU as /*...*/ syntax, unimplemented)
style.asm.11=$(colour.code.comment.box),$(font.code.comment.box)
# Character/String (single quote) (also character prefix in GNU as)
style.asm.12=$(colour.char)
# End of line where string is not closed
style.asm.13=fore:#000000,back:#E0C0E0,eolfilled
# Extended instructions
style.asm.14=fore:#B00040


command.compile.$(file.patterns.asm)=masm $(FileNameExt)

command.name.0.*.asm=Link
command.0.*.asm=link $(FileName)


statement.indent.$(file.patterns.asm)=9 .if

Or must I use this masm\nasm?

Edited by System238
Link to comment
Share on other sites

Just replace masm with you compiler :)

Either you specify the full path or you add the compiler path to the %PATH% environment variable.

Edited by ProgAndy

*GERMAN* [note: you are not allowed to remove author / modified info from my UDFs]My UDFs:[_SetImageBinaryToCtrl] [_TaskDialog] [AutoItObject] [Animated GIF (GDI+)] [ClipPut for Image] [FreeImage] [GDI32 UDFs] [GDIPlus Progressbar] [Hotkey-Selector] [Multiline Inputbox] [MySQL without ODBC] [RichEdit UDFs] [SpeechAPI Example] [WinHTTP]UDFs included in AutoIt: FTP_Ex (as FTPEx), _WinAPI_SetLayeredWindowAttributes

Link to comment
Share on other sites

Basic logic check: If you can't figure out how to configure SciTE, which is pretty simple, just a bit archaic with it's config-file only method... how exactly do you expect to write any assembler code that doesn't unintentionally eat your hard drive?

Link to comment
Share on other sites

Basic logic check: If you can't figure out how to configure SciTE, which is pretty simple, just a bit archaic with it's config-file only method... how exactly do you expect to write any assembler code that doesn't unintentionally eat your hard drive?

:\

Thats what makes learning fun...

Link to comment
Share on other sites

  • 10 months later...

Edit: assembly looks so easy like the windows batch scripts! any one know where I can indulge into this FASM if thats the word....

This can be included in the top 10 stupidest things I've every typed on these forums...

Assembly is so f***ing hard, I've spent too much time figuring out how to get the full command line parameters in my application so I can pass it to another process that I want to execute.

include \masm32\include\masm32rt.inc
.code
main proc
LOCAL sui:STARTUPINFO
LOCAL pi:PROCESS_INFORMATION 
    invoke memfill,ADDR sui,SIZEOF sui,0 ; fill STARTUPINFO
    mov sui.cb,SIZEOF sui    ;
    fn CreateProcess,0,"C:\Windows\notepad.exe",0,0,0,0,0,0,ADDR sui,ADDR pi
    ret
main endp
end main
Link to comment
Share on other sites

  • 1 month later...

If this is still being talked about. Visual Studio makes large files in Debug mode. You have to change your devel to Release mode to get the really small files, and.. make sure you change your Multithreaded settings to -just- Multithreaded and not Multithreaded .dll

I do alot of windows programming.

Link to comment
Share on other sites

If this is still being talked about. Visual Studio makes large files in Debug mode. You have to change your devel to Release mode to get the really small files, and.. make sure you change your Multithreaded settings to -just- Multithreaded and not Multithreaded .dll

I do alot of windows programming.

Thanks, I'll be sure to keep that in mind.

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
 Share

  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...