45 lines
1.3 KiB
Plaintext
45 lines
1.3 KiB
Plaintext
1.sizeof 不是函数,是运算符。
|
|
2.c++没有写构造函数,C++编译器不一定自动写一个默认构造函数。
|
|
3.c++会对函数名符号进行改编,可以支持函数重载(name mangling)。
|
|
4.被extern "C" { 修饰的代码会按照C语言的规则编译、声明被exeter "C"包含,CPP实现可以不要。
|
|
5.函数调用要开辟会回收栈空间。
|
|
6.incline 建议编译器 incline。
|
|
[什么时候使用inline?]
|
|
(1)函数体积不大
|
|
(2)频繁调用
|
|
7.汇编
|
|
从上往下是向下兼容,实际比如影响AX也是会影响x64中的RAX
|
|
x64
|
|
RAX\RBX\RCX\RDX : 通用寄存器
|
|
x86
|
|
EAX\EBX\ECX\EDX : 通用寄存器
|
|
16位
|
|
AX\BX\CX\DX : 通用寄存器
|
|
8位
|
|
AH H High
|
|
AL L Low
|
|
8.C++中使用内联汇编
|
|
汇编中没有;
|
|
__asm {
|
|
|
|
}
|
|
word 2字节.
|
|
move dest, src
|
|
[地址值]([]里面一定是地址值)
|
|
call 调用
|
|
字节占用都是低位=>高位占用,
|
|
已经占用的内存,内部采集大小端方式:
|
|
|
|
int a = 3;
|
|
(高 ----> 低)
|
|
00000000 00000000 00000000 00000011
|
|
[大小端] 一般来讲,大多数都是小端模式(低字节放低地址)。
|
|
|
|
lea dest, [地址值] (复制地址值)(load effect address)
|
|
mov dest, [地址值] (复制地址值内容)
|
|
xor a, b (a,b的异或结果复制给a)
|
|
add 加, sub 减, inc 自增, dec 自减, jmp 跳转
|
|
xor 异或
|
|
|
|
|