Skip to content
This repository has been archived by the owner on Feb 28, 2023. It is now read-only.

Releases: kspalaiologos/asmbf

optimizations, effective adresses

23 Jun 13:45
120fec9
Compare
Choose a tag to compare

This release features:

  • Effective adresses:
txt "abcdefghijklmnop"

mov r5, 2
mov r6, 3
rcl r1, 1(r6,r5,4)
out r1

; mov r1, 2(r3, r4, 4) => mov r1, [r4 * 4 + r3 + 2]
  • ots, cots-sto` with reversed parameter order
  • flag register and effective adress immediates are now accessible.
  • dsc - remove the top of the stack
  • removed bfintd
  • added incunabulum

Optimizations, floating point support, additional conditional instructions.

12 Jun 19:45
Compare
Choose a tag to compare

This release features 30 new instructions. Notes:

  • Enlargened local permanent generation size.
  • Optimized nearly every microcode snippet.
  • shr, shl, cout, cin
  • dup, cdup, additional conditional instructions in form of: c[xor/or/and][eq/lt/gt/ne/ge/le].
  • Error messages!
  • Fixed bfi-derle
  • bfi: added decimal flag.
  • Rave has became temporairly obsolete: will replace it later.
  • New bfmake, with less bugs and more Perl!
  • bfasm crashed? generate_report is here.
  • around 13 new tests.
  • test timeout (20s).

builtin bit operations

16 May 15:18
Compare
Choose a tag to compare

This release features the following instructions:

band - bit and
bor - bit or
bxor - bit xor
cflip - flip the conditional execution flag register.

Long instruction aliases

15 May 17:36
8d17668
Compare
Choose a tag to compare

This release features a tool to alias registers and instruction names.

Example:

?bp=r1
?sp=r2
mov bp, sp

List of aliases:

?push=psh
?xchg=swp
?cadd=cad
?csub=csu
?cmul=cmu
?cdiv=cdi
?cmod=cmd
?casl=csl
?casr=csr
?cpow=cpw
?cpush=cps
?cpsh=cps
?cpop=cpo
?cxchg=csw
?cswp=csw
?csrv=crv
?cmov=cmo
?crcl=crc
?csto=cst

Instruction alias example:

push r1
xchg r1, r2
out r2

constpp, rave bugfixes

15 May 12:32
7c1c8e4
Compare
Choose a tag to compare

constpp is a new preprocessor introduced alongside asm2bf.
It can be used to alias instruction and register names, like so:

?r6=sp

; and now

sub sp, 4

; is equal to

sub r6, 4

No spaces are allowed after and before =, no spaces are allowed inside aliases, no spaces are allowed after the question mark (?).

Rave has now a 16-bit compatibility option.

Raw left and right bracket fix for Rave (oops)

Now the bitness example has the correct brackets used to create a while loop.

smp and amp micropatch

Removed dependency on -lfl

Bugfix release

18 Apr 16:22
a74c208
Compare
Choose a tag to compare

A purely bugfix-dedicated release. It features optimized modulus, (now working) r5 and r6 due to a programming error introduced while implementing conditional instructions.

Conditional instructions, b2bf!

17 Apr 14:13
fc93488
Compare
Choose a tag to compare

Now that's a large change!
This update features the following:

  • Now, asm2bf has an internal flag register (inaccessible via normal means),
  • The flag register can be set by the following: ceq cne cle clt cge cgt (equivalent to eq, ne, le, lt, ge, gt). For instance:
mov r1, 23
ceq r1, 23
; will set the flag register to 1.
ceq r1, 0
; nope, didn't succeed, now clears the flag register.
  • New jumps: cjn cjz, that depend on the state of the flag register. For example:
; Old way (trashes r3):
mov r3, r1
eq_ r3, 10
jnz r3, %target

; New way (no trashes):
ceq r1, 10
cjn %target
  • New instructions! All of these execute, whenever the flag register is set to 1:
Conditional variant: cad csu cmu cdi cmd csl csr cpw cps cpo csw crv cmo crc cst
Classic variant:     add sub mul div mod asl asr pow psh pop swp srv mov rcl sto
  • b2bf (coined by comrade Maviek) - a B to asm2bf compiler. It's an initial release, so a few things in b2bf may be rigged, but it's able to produce decent code (just three times bigger than the handcoded and optimized assembly equivalent).

Better BFVM, syntax changes.

16 Apr 16:11
43e6c8e
Compare
Choose a tag to compare

This release features some syntax changes (i.e. _ is optional at the end of instruction), as well as some changes to BFVM aiming at higher efficiency.

BFVM, new installation method.

14 Apr 17:47
de9a6bc
Compare
Choose a tag to compare
v1.3.3

Safer deployment process (#67)

Project cleanup

13 Apr 09:24
d8fee4c
Compare
Choose a tag to compare

This release cleans up the root directory, removes useless files, uniformizes the wiki article and overall simplifies the project structure.