请教这个汇编代码做了神么

请问这个汇编代码做了神么
swap (uint32_t val)
{
  uint32_t tmp;

  asm ("eor %1, %0, %0, ror #16;"
  "bic %1, %1, #0xff0000;"
  "mov %0, %0, ror #8;"
  "eor %0, %0, %1, lsr #8" : "+r"(val), "=r"(tmp) : );

  return val;
}
%1 ,%0 是参数1,0的意思吗?

------解决方案--------------------
%1 代表输入值X要放如的寄存器,%0 表示输出寄存器(前面一定要加'=')