Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

275
Visualizações
¿Por qué las asignaciones de varios miembros de clase producen un ensamblaje redundante?

Mientras jugaba con C# me encontré con este "comportamiento extraño".

La función

 public static Vec3 f() { var v = new Vec3(); vx = 0; vy = 0; vz = 0; vx = 0; vy = 0; vz = 0; vx = 0; vy = 0; vz = 0; return v; }

Cuando usa la palabra clave de class para Vec3 , la salida de asm produce un código redundante:

 public class Vec3 { public int x; public int y; public int z; }

Asm

 Cf() L0000: sub rsp, 0x28 L0004: mov rcx, 0x7ff7aaa5d040 L000e: call 0x00007ff801dba370 L0013: xor edx, edx L0015: mov [rax+8], edx L0018: mov [rax+0xc], edx L001b: mov [rax+0x10], edx L001e: mov [rax+8], edx ; isn't this redundant? L0021: mov [rax+0xc], edx ; isn't this redundant? L0024: mov [rax+0x10], edx ; isn't this redundant? L0027: mov [rax+8], edx ; isn't this redundant? L002a: mov [rax+0xc], edx ; isn't this redundant? L002d: mov [rax+0x10], edx ; isn't this redundant? L0030: add rsp, 0x28 L0034: ret

Pero con la palabra clave struct obtenemos el siguiente resultado:

 public struct Vec3 { public int x; public int y; public int z; }

Asm

 Cf() L0000: xor eax, eax L0002: mov [rcx], eax L0004: mov [rcx+4], eax L0007: mov [rcx+8], eax L000a: mov rax, rcx L000d: ret

Pregunta

¿Esas líneas de montaje no son redundantes? Si no, ¿puede explicarme por qué?

Nota

Sé que la class y la struct NO son lo mismo. La pregunta es sobre múltiples instrucciones MOV .

over 4 years ago · Santiago Trujillo
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda