Author Topic: GoAsm 0.60 update  (Read 1482 times)

wjr

  • Member
  • **
  • Posts: 185
    • WJR's website
GoAsm 0.60 update
« on: April 26, 2015, 04:49:39 PM »
GoAsm – version 0.60 now available here http://www.godevtool.com/Goasm.zip with the following changes:

  • added support for SSE3 instructions
  • added support for SSSE3 instructions
  • added support for AES and ADX instructions
  • added support for a few other instructions (RDTSCP MOVBE POPCNT LZCNT TZCNT RDRAND RDSEED)
  • modified prefix processing and error messages, more invalid cases noted
  • fixed use of segment override before a NOT instruction
  • fixed SBB instruction to give usual error if trying to write to CONST data
  • fixed 64-bit FPU instructions with Q[m64] operand to not have REX byte
  • fixed /ms command line switch for case of ARG before INVOKE (but each ARG will need to be on its own line)
  • modified listing file output, including:
    • extended left hand side by 8 characters
    • extended right hand side by 24 characters (for longer lines from source file)
    • added spacing character '=' on left hand side for change of SECTION
    • added relocation [...] for case of both Displacement and Immediate
    • modified code display for FRAME / INVOKE to show each instruction on one line
    • modified code display with some prefix / opcode spacing and alignment

GoAsm - version 0.60.0.1 now up with the following adjustments:

  • fixed problem with 64-bit INVOKE when building without listing file
« Last Edit: May 04, 2015, 05:43:06 AM by wjr »

FlySky

  • Regular Member
  • *
  • Posts: 36
Re: GoAsm 0.60 update
« Reply #1 on: April 26, 2015, 07:39:57 PM »
Great update wjr,
Thanks for all your hard work.

Yuri

  • Member
  • **
  • Posts: 155
Re: GoAsm 0.60 update
« Reply #2 on: May 03, 2015, 10:07:57 PM »
Hi Wayne,

I have noticed something strange in how 0.60 treats short jumps in x64 code. For example, the jump in the code below is OK for 0.59.0.1, while 0.60 produces different results depending on whether I use the /l flag.

Code: [Select]
DATA SECTION

num DD 0


CODE SECTION

Start:
    jne >
        mov D[rbx+4],10
        lea rax,[rbx+8]
        invoke func, 0, rax
        mov D[rbx+8],8
        lea rdi,[rbx+8]
        invoke func, rdi, 0
        invoke func, rdi, addr num
    :
    ret

Quote
D:\PROG\TEST\GoAsm>goasm /x64 jump.asm

GoAsm.Exe Version 0.60.0.0 - Copyright Jeremy Gordon 2001-2015 - JG@JGnet.co.uk

Error!
Line 9 of assembler source file (jump.asm):-
Forward short jump was to a place more than 127 bytes away (by 5 bytes)
jne >

OBJ file not made

D:\PROG\TEST\GoAsm>goasm /l /x64 jump.asm

GoAsm.Exe Version 0.60.0.0 - Copyright Jeremy Gordon 2001-2015 - JG@JGnet.co.uk
Output file: jump.obj
Output file: jump.lst

wjr

  • Member
  • **
  • Posts: 185
    • WJR's website
Re: GoAsm 0.60 update
« Reply #3 on: May 04, 2015, 05:51:34 AM »
Thanks! I should have caught this one (jump to wrong label). I am still working on better update testing on the 64-bit side. GoAsm version 0.60.0.1 now available.

Yuri

  • Member
  • **
  • Posts: 155
Re: GoAsm 0.60 update
« Reply #4 on: May 04, 2015, 02:00:38 PM »
Thanks, Wayne, it works now.