Hi Dave,

> FYI, I see an instruction 'jeq' in used in src64/io.l, but I don't see
> it described in doc64/asm.
> 
> Hm, for that matter, I don't see 'jne' or 'jgt' either. Maybe I
> shouldn't expect to find 'jeq'?

That's right: 'jeq' is just an alias for 'jz', as 'jlt' is one for 'jc'.
You can find the complete list in "src64/lib/asm.l":

   (de *Transfers
      call
      jmp
      jz jeq
      jnz jne
      js
      jns
      jsz
      jnsz
      jc jlt
      jnc jge
      jcz jle
      jncz jgt )

   (de *Conditions
      (T jmp . jmp)
      (z jz . jnz)
      (nz jnz . jz)
      (s js . jns)
      (ns jns . js)
      (sz jsz . jnsz)
      (nsz jnsz . jsz)
      (c jc . jnc)
      (nc jnc . jc)
      (cz jcz . jncz)
      (ncz jncz . jcz)
      (eq jz . jnz)
      (ne jnz . jz)
      (lt jc . jnc)
      (le jcz . jncz)
      (gt jncz . jcz)
      (ge jnc . jc) )


> I guess ^@ is never valid inside a Transient Symbol?
> 
> : "^@"
> Bad input '@'

Correct. Ctrl-@ is ASCII NULL, and is reserved as an end-of-name marker
in symbol names (just like in C).


> What does cmp do to the flags?
>       cmp dst src       # Compare 'dst' with 'src' [zsc]

* The zero-flag is set if 'dst' and 'src' are equal

* The sign-flag is set if the signed two-complement difference ('dst'
  minus 'src') is negative

* The carry-flag is set if the unsigned difference ('dst' minus 'src')
  results in carry out of the most significant bit


> Within the flag notation [---] in doc64/asm, What is the difference
> between . and -? I see that _ is clear.

   '-' Flag is not modified
   '.' Value of the flag is undefined
   '_' Flag is cleared

For instructions where [...] isn't specified yet in the docs, we may
assume "don't care" for now.

♪♫ Alex
-- 
UNSUBSCRIBE: mailto:picolisp@software-lab.de?subject=Unsubscribe

Reply via email to