小编sya*_*cer的帖子

C++ 初始化奇怪的行为

typedef struct node {
    
    int val;
    int val2;
    
    node(int a, int b) : val(a), val2(b) {}
    node(int val) = delete;
}node;

int main()
{
    node a = {3};
    cout << a.val << " " << a.val2 << endl;
    return 0; 
}
Run Code Online (Sandbox Code Playgroud)

上面的代码给出了编译错误,表明使用了已删除的函数node::node(int)

但是,当我删除 时node(int a, int b) : a(val), b(val2) {},这段代码编译没有问题。这怎么会发生呢?

c++ initialization aggregate-initialization list-initialization c++20

4
推荐指数
1
解决办法
150
查看次数

X86 汇编:.text.startup 部分和 .text 部分有什么区别

    .file   "test-instr.c"
    .text
.Ltext0:
    .section    .rodata.str1.1,"aMS",@progbits,1
.LC0:
    .string "Hum?"
.LC1:
    .string "Looks like a zero to me!"
.LC2:
    .string "A non-zero value? How quaint!"
    .section    .text.startup,"ax",@progbits
    .p2align 4,,15
    .globl  main
    .type   main, @function
main:
/* --- trampoline malloc shm space begin --- */ 

.align 4 

.section .data 
shmSize: .quad 8 * 4 * 0x10000 
.global shmptr
shmptr: .quad 0
.section .text
.extern malloc 
movq (shmSize), %rdi 
call malloc 
movq %rax, (shmptr) 
/* --- trampoline malloc shm spacd end --- */ …
Run Code Online (Sandbox Code Playgroud)

x86 assembly gcc gnu-assembler sections

3
推荐指数
1
解决办法
1845
查看次数

什么时候可以在 x86-64 模式下使用 lahf?

所述的描述LAHF指令为:

该指令在兼容模式和传统模式下如上所述执行。仅当 CPUID.80000001H:ECX.LAHF-SAHF[bit 0] = 1 时才在 64 位模式下有效

第一个问题:什么是兼容性和传统模式。它们与实模式和保护模式有何不同

第二个问题:CPUID.80000001H:ECX.LAHF-SAHF[bit 0] = 1是什么意思

谢谢!!!

assembly x86-64 cpuid

0
推荐指数
1
解决办法
135
查看次数