小编edm*_*dmz的帖子

什么是Intel微码?

根据我的阅读,它用于修复CPU中的错误而无需修改BIOS.根据我对汇编的基本知识,我知道汇编指令在内部由CPU分成微码并相应地执行.但是,在系统启动并运行时,intel会以某种方式提供访问以进行一些更新.

有人有更多的信息吗?有没有关于微码可以做些什么以及如何使用它们的文件?


编辑:我已经阅读了维基百科的文章:没有弄清楚我怎么能自己写一些,以及它会有什么用处.

linux assembly intel

75
推荐指数
3
解决办法
9万
查看次数

为什么不调用nullptr NULL?

在C++ 11中,nullptr关键字被添加为更安全的类型指针常量,因为先前的通用定义NULL为0有一些问题.

为什么标准委员会选择不调用新的空指针NULL,或者声明NULL应该是#defined nullptr

c++ language-design c++11

67
推荐指数
4
解决办法
5343
查看次数

可能是sizeof(T*)!= sizeof(const T*)的情况?

我正和我的老板争论这件事.他们说"是的,他们可以是不同的."

有可能是sizeof(T*) != sizeof(const T*)一种类型T

c++ language-lawyer

67
推荐指数
3
解决办法
3316
查看次数

为什么编译器更喜欢int过载到char的varargs char重载?

public class TestOverload {

    public TestOverload(int i){System.out.println("Int");}
    public TestOverload(char... c){System.out.println("char");}

    public static void main(String[] args) {
        new TestOverload('a');
        new TestOverload(65);
    }
}
Run Code Online (Sandbox Code Playgroud)

产量

Int
Int
Run Code Online (Sandbox Code Playgroud)

这是预期的行为吗?如果是这样,为什么呢?我期待:char,Int

注意:我使用的是Java 8

java overloading

63
推荐指数
3
解决办法
3537
查看次数

C#getter vs readonly

以下是否有任何区别?

class C
{
    // One:
    public static readonly int ValueAsAMember = 42;

    // Two:
    public static int ValueAsAProperty { get { return 42; } }
}
Run Code Online (Sandbox Code Playgroud)

我习惯于以第一种方式编写常量(除非它们是私有/内部的,在这种情况下我使用const关键字),但我最近看到了第二种形式.

在可读性,约定,性能或其他方面,是否有任何优势?

c#

33
推荐指数
3
解决办法
7589
查看次数

符合C标准的方法来访问空指针地址?

在C中,引用空指针是未定义行为,但是空指针值具有位表示,在某些体系结构中它使其指向有效地址(例如地址0).为了清楚起见,
我们将此地址称为空指针地址.

假设我想在C中编写一个软件,在一个无限制访问内存的环境中.假设我想在空指针地址处写一些数据:我将如何以符合标准的方式实现这一点?

示例案例(IA32e):

#include <stdint.h>

int main()
{
   uintptr_t zero = 0;

   char* p = (char*)zero;

   return *p;
}
Run Code Online (Sandbox Code Playgroud)

当使用带有-O3的 gcc与IA32e 编译时,此代码将转换为

movzx eax, BYTE PTR [0]
ud2
Run Code Online (Sandbox Code Playgroud)

由于UB(0是空指针的位表示).

由于C接近低级编程,我相信必须有一种方法来访问空指针地址并避免UB.


为了清楚
起见,我问的是标准对此有何看法,而不是如何以实现定义的方式实现这一点.
我知道后者的答案.

c null-pointer undefined-behavior language-lawyer

32
推荐指数
2
解决办法
1005
查看次数

为什么std :: string没有保留构造函数?

有几个构造std::string.我正在寻找一种避免重新分配的方法,我很惊讶有一个填充构造函数,但没有"保留"构造函数.

 std::string (size_t n, char c);
Run Code Online (Sandbox Code Playgroud)

但不是

 std::string (size_t n);
Run Code Online (Sandbox Code Playgroud)

所以我必须reserve()在它已经分配了默认值(在我的情况下是16个字节)之后调用,只是为了立即重新分配它?

有没有这样的构造函数在创建对象时直接保留空间的原因,而不是必须手动执行?或者我错过了什么,有一些方法可以做到这一点?

使用fill构造函数是浪费时间,因为它将遍历内存只是为了被覆盖,并且还会导致错误的大小,因为s.length()报告N而不是0.

c++ string

27
推荐指数
1
解决办法
4769
查看次数

当字符发生变化时,为什么这个std :: string的大小会发生变化?

我有一个问题,其中字符串的大小是由一个'\0'字符的存在实现的.我搜索到了所有的东西,但仍无法得到答案.

这是片段.

int main()
{
  std::string a = "123123\0shai\0";
  std::cout << a.length();
}
Run Code Online (Sandbox Code Playgroud)

http://ideone.com/W6Bhfl

这种情况下的输出是

6
Run Code Online (Sandbox Code Playgroud)

其中具有不同字符串的相同程序具有数字而不是字符

int main()
{
  std::string a = "123123\0123\0";
  std::cout << a.length();
}
Run Code Online (Sandbox Code Playgroud)

http://ideone.com/mtfS50

给出一个输出

8
Run Code Online (Sandbox Code Playgroud)

引擎盖下究竟发生了什么?'\0'角色的存在如何改变行为?

c++ string escaping

26
推荐指数
2
解决办法
1847
查看次数

C编译器是否有义务始终从内存重新加载const值?

const我的嵌入式C程序中有一个变量.它0在程序代码中定义和初始化.它通过链接描述文件放在一个特殊的ROM区域.可以通过特殊编程程序更改特殊区域的内容,但在主程序执行期间不能更改.

问题是我是否必须将常数声明为volatile.如果它没有标记为volatile,编译器是否允许用它替换所有引用0?或者是否有义务在程序执行期间至少加载一次?

c

24
推荐指数
2
解决办法
1507
查看次数

建造一个空洞类型?

我得到了一段void()用作参数的代码.代码不编译......很明显?

我们可以实例化任何类型的东西void吗?我相信答案是否定的,除了a void*.例如:

  1. 编写函数void askVoid(void param) {}错误:

参数可能没有void类型

  1. 编写函数void askNaught() {}并使用askNaught(void())`错误调用它:

错误C2660 :: takeNaught函数不带1个参数

  1. 编写模板化函数template <typename T> void takeGeneric(T param) {}并调用它有takeGeneric(void())错误:

错误C2893:无法专门化功能模板 void takeGeneric(T)

  1. 声明void voidType错误:

不允许使用不完整的类型

  1. 声明auto autoVoid = void()错误:

不能推断出auto类型

  1. 声明void* voidPtr工作正常,但remove_pointer_t<decltype(voidPtr)> decltypeVoid错误:

错误C2182 :: decltypeVoid非法使用类型void

就是这样,对吧?void()C++中没有地方可供选择吗?这只是我给出的错误代码,对吧?

c++ void

21
推荐指数
3
解决办法
2025
查看次数