Alternar un bit específico

Así que he visto las preguntas como alternar un poco con ith positon y ¿Cómo establece, borra y alterna un solo bit?, pero me preguntaba si había una buena manera de alternar un poco en la posición i-ésima en el ensamblaje x86-64?

ntenté escribirlo en C y mirar a través del ensamblaje y no entiendo exactamente por qué hay algunas cosas que están ahí.

DO

unsigned long toggle(unsigned long num, unsigned long bit)
{
  num ^= 1 << bit;
  return num;
}

int main()
{
  printf("%ld\n", toggle(100, 60));
  return 0;
}

Conmutar conjunto de funciones de GDB:

<toggle>
push rbp
mov rbp, rsp
mov QWORD PTR [rbp-0x8],rdi
mov QWORD PTR [rbp-0x10],rsi
mov rax, QWORD PTR [rbp-0x10]
mov edx, 0x1
mov ecx, eax
shl edx, cl
mov eax, edx
cdqe
xor QWORD PTR [rbp-0x8],rax
mov rax, QWORD PTR [rbp-0x8]
pop rbp
ret

¿Puede alguien guiarme por lo que está sucediendo en el nivel de ensamblaje para que pueda entender mejor esto y escribir mi propia función de alternar en x86-64?

Respuestas a la pregunta(1)

Su respuesta a la pregunta