小编Pet*_*des的帖子

Intel HAXM安装错误 - 此计算机不支持Intel虚拟化技术(VT-x)

我的HAXM安装有问题.这就是事情.我每次尝试为计算机安装HAXM时都会收到此错误: 安装错误打印屏幕

问题是,我的电脑支持虚拟化技术(见下图).知道如何解决这个问题吗? 在此输入图像描述

intel android-emulator haxm

123
推荐指数
7
解决办法
22万
查看次数

在x86汇编中将寄存器设置为零的最佳方法是什么:xor,mov或?

以下所有说明都做同样的事情:设置%eax为零.哪种方式最佳(需要最少的机器周期)?

xorl   %eax, %eax
mov    $0, %eax
andl   $0, %eax
Run Code Online (Sandbox Code Playgroud)

optimization performance x86 assembly micro-optimization

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

在大多数现代系统中,堆栈增长的方向是什么?

我正在准备C中的一些培训材料,我希望我的示例适合典型的堆栈模型.

C堆栈在Linux,Windows,Mac OSX(PPC和x86),Solaris和最新的Unix中的发展方向是什么?

assembly stack callstack abi stack-frame

101
推荐指数
6
解决办法
4万
查看次数

文件是否在UNIX中附加原子?

一般来说,当我们从多个进程附加到UNIX中的文件时,我们可以理所当然地认为什么?是否有可能丢失数据(一个进程会覆盖其他进程)?数据是否可能被破坏?(例如,每个进程在每个追加到日志文件时附加一行,是否有可能两行被破坏?)如果追加在上述意义上不是原子的,那么确保互斥的最佳方法是什么?

unix file-io posix atomic atomicity

99
推荐指数
4
解决办法
3万
查看次数

本机代码,机器代码和汇编代码之间有什么区别?

我对.NET语言环境中的机器代码和本机代码感到困惑.

他们之间有什么区别?它们是一样的吗?

.net assembly bytecode machine-code

96
推荐指数
4
解决办法
4万
查看次数

当项目中包含程序集文件时,mmap产生了意外的执行权限

我正在用这个把我的头撞到墙上。

在我的项目中,使用mmap映射(/proc/self/maps)分配内存时,尽管我只请求了可读内存,但它仍是一个可读且可执行的区域。

在研究了strace(看起来不错)和其他调试之后,我能够确定似乎唯一可以避免这个奇怪问题的东西:从项目中删除程序集文件,只保留纯C。(什么?!)

所以这是我一个奇怪的例子,我正在使用Ubunbtu 19.04和默认的gcc。

如果使用ASM文件(为空)编译目标可执行文件,则将mmap返回一个可读和可执行区域,如果构建时没有该区域,则它将正常运行。请参阅/proc/self/maps示例中已嵌入的输出。

example.c

#include <stdio.h>
#include <string.h>
#include <sys/mman.h>

int main()
{
    void* p;
    p = mmap(NULL, 8192,PROT_READ,MAP_ANONYMOUS|MAP_PRIVATE,-1,0);

    {
        FILE *f;
        char line[512], s_search[17];
        snprintf(s_search,16,"%lx",(long)p);
        f = fopen("/proc/self/maps","r");
        while (fgets(line,512,f))
        {
            if (strstr(line,s_search)) fputs(line,stderr);
        }

        fclose(f);
    }

    return 0;
}
Run Code Online (Sandbox Code Playgroud)

example.s:是一个空文件!

产出

附带ASM版本

VirtualBox:~/mechanics/build$ gcc example.c example.s -o example && ./example
7f78d6e08000-7f78d6e0a000 r-xp 00000000 00:00 0 
Run Code Online (Sandbox Code Playgroud)

没有ASM随附的版本

VirtualBox:~/mechanics/build$ gcc example.c -o example && ./example
7f1569296000-7f1569298000 …
Run Code Online (Sandbox Code Playgroud)

c linux assembly mmap

94
推荐指数
2
解决办法
2506
查看次数

为什么x86-64系统只有48位虚拟地址空间?

在一本书中,我读了以下内容:

32位处理器具有2 ^ 32个可能的地址,而当前的64位处理器具有48位地址空间

我的期望是,如果它是一个64位处理器,地址空间也应该是2 ^ 64.

所以我想知道这种限制的原因是什么?

x86-64 cpu-architecture virtual-memory processor-architecture

88
推荐指数
7
解决办法
4万
查看次数

单词和字节之间有什么区别?

我做了一些研究.一个字节是8位,一个字是可以在内存中寻址的最小单元.单词的确切长度会有所不同.我不明白的是有一个字节是什么意思?为什么不说8位?

我问过这个问题的教授,他说这些天大多数机器都是字节可寻址的,但这会产生什么结果呢?

memory hardware assembly terminology cpu-architecture

88
推荐指数
7
解决办法
15万
查看次数

是否允许这种浮点优化?

我试图检查哪里float失去了精确表示大整数的能力。所以我写了这个小片段:

int main() {
    for (int i=0; ; i++) {
        if ((float)i!=i) {
            return i;
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

该代码似乎适用于所有编译器,但不包括clang。Clang生成一个简单的无限循环。上帝保佑

可以吗?如果是,那是QoI问题吗?

c++ floating-point clang

88
推荐指数
2
解决办法
3236
查看次数

std::is_function 是如何实现的?

以下是如何实现的std::is_function

template<class T>
struct is_function : std::integral_constant<
    bool,
    !std::is_const<const T>::value && !std::is_reference<T>::value
> {};
Run Code Online (Sandbox Code Playgroud)

(来自CPP 参考

在我看来, anint将是此定义下的函数。我错过了什么?

c++ templates std sfinae

88
推荐指数
2
解决办法
6212
查看次数