Choosing registers for assembly snippets

Zixian Cai zixian.cai at
Tue Oct 4 11:59:57 UTC 2022

Hi all,

I’m just wondering what the best practices are in terms of choosing registers.

I was looking at the assembly code for tlab allocation ( and noticed the following.

  1.  tmp1 register is invalid.
  2.  tmp2 register is valid but sometimes clashes with var_size_in_bytes, which requires the workaround here
  3.  t0 is used as a temporary register despite not passed into the method as a temporary register

I’d really appreciate if someone could shed insight on how these decisions are made so that I can avoid common pitfalls when writing assembly code. The only resource I found at the moment is the architecture description file which suggests x5(t0)-x6(t1) can always be used as temporary registers.

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <>

More information about the riscv-port-dev mailing list