Solar Assembler: Difference between revisions

From OSDev.wiki
Jump to navigation Jump to search
[unchecked revision][unchecked revision]
Content added Content deleted
(New page: Solar Assembler (aka Sol_Asm) is a multipass macro assembler written by Bogdan Ontanu. It supports HLL primitives, like procedures, structures/unions, .IF/.ENDIF, .REPEAT/.UNTIL, etc. Sol_...)
 
No edit summary
Line 1: Line 1:
{{In Progress}}

Solar Assembler (aka Sol_Asm) is a multipass macro assembler written by Bogdan Ontanu. It supports HLL primitives, like procedures, structures/unions, .IF/.ENDIF, .REPEAT/.UNTIL, etc. Sol_Asm can produce binary files, PE executables (32/64-bit), COFF object files (32/64-bit), ELF object files (32-bit only) and Mach-O object files (32-bit only).
Solar Assembler (aka Sol_Asm) is a multipass macro assembler written by Bogdan Ontanu. It supports HLL primitives, like procedures, structures/unions, .IF/.ENDIF, .REPEAT/.UNTIL, etc. Sol_Asm can produce binary files, PE executables (32/64-bit), COFF object files (32/64-bit), ELF object files (32-bit only) and Mach-O object files (32-bit only).

==Sol_Asm syntax==
{{Stub}}
The syntax of Sol_Asm is easy to learn and has similarities with the syntax of [[TASM]] or [[MASM]].
This table shows the differences between Sol_Asm and other HLL assemblers:

{| {{wikitable}}
!
! SOL_ASM
! [[TASM]]
! [[MASM]]
! [[FASM]] with HLL macros
|-
| Procedures
| <source lang="asm">
PROC TestProc
USES eax, ebx
ARG Var1, Var2
LOCAL Var3

...
ENDP
</source>
| <source lang="asm">
TestProc PROC
USES eax, ebx
ARG Var1:DWORD, Var2:BYTE
LOCAL Var3:WORD

...
ENDP
</source>
| <source lang="asm">
TestProc PROC \
USES eax, ebx \
Var1:DWORD, Var2:BYTE
LOCAL Var3

...
TestProc ENDP
</source>
| <source lang="asm">
proc TestProc \
USES eax ebx \
Var1:DWORD, Var2:BYTE
LOCAL Var3

...
endp
</source>
|-
| Structures
| <source lang="asm">
STRUC StructTest
Var1: db ?
Var2: dw ?
Var3: dd ?
ENDS
</source>
| <source lang="asm">
StructTest STRUC
Var1: db ?
Var2: dw ?
Var3: dd ?
ENDS
</source>
| <source lang="asm">
StructTest STRUC
Var1: db ?
Var2: dw ?
Var3: dd ?
StrucTTest ENDS
</source>
| <source lang="asm">
struct StructTest
Var1: db ?
Var2: dw ?
Var3: dd ?
ends
</source>
|-
| Reserve non initialized data
| <source lang="asm">
Buffer: rb 256
</source>
| <source lang="asm">
Buffer: db 256 dup(?)
</source>
| <source lang="asm">
Buffer: db 256 dup(?)
</source>
| <source lang="asm">
Buffer: db 256 dup(?)
or
Buffer: rb 256
</source>
|}


==See Also==
==See Also==

Revision as of 12:17, 15 July 2009

This page is a work in progress.
This page may thus be incomplete. Its content may be changed in the near future.

Solar Assembler (aka Sol_Asm) is a multipass macro assembler written by Bogdan Ontanu. It supports HLL primitives, like procedures, structures/unions, .IF/.ENDIF, .REPEAT/.UNTIL, etc. Sol_Asm can produce binary files, PE executables (32/64-bit), COFF object files (32/64-bit), ELF object files (32-bit only) and Mach-O object files (32-bit only).

Sol_Asm syntax

This page is a stub.
You can help the wiki by accurately adding more contents to it.

The syntax of Sol_Asm is easy to learn and has similarities with the syntax of TASM or MASM. This table shows the differences between Sol_Asm and other HLL assemblers:

SOL_ASM TASM MASM FASM with HLL macros
Procedures
PROC TestProc
     USES eax, ebx
     ARG Var1, Var2
     LOCAL Var3

     ...
ENDP
TestProc PROC
     USES eax, ebx
     ARG Var1:DWORD, Var2:BYTE
     LOCAL Var3:WORD

     ...
ENDP
TestProc PROC \
     USES eax, ebx \
     Var1:DWORD, Var2:BYTE
     LOCAL Var3

     ...
TestProc ENDP
proc TestProc \
     USES eax ebx \
     Var1:DWORD, Var2:BYTE
     LOCAL Var3

     ...
endp
Structures
STRUC StructTest
    Var1:    db ?
    Var2:    dw ?
    Var3:    dd ?
ENDS
StructTest STRUC
    Var1:    db ?
    Var2:    dw ?
    Var3:    dd ?
ENDS
StructTest STRUC
    Var1:    db ?
    Var2:    dw ?
    Var3:    dd ?
StrucTTest ENDS
struct StructTest
    Var1:    db ?
    Var2:    dw ?
    Var3:    dd ?
ends
Reserve non initialized data
Buffer:    rb 256
Buffer:    db 256 dup(?)
Buffer:    db 256 dup(?)
Buffer:    db 256 dup(?)
or
Buffer:    rb 256

See Also

External Links