小编Joh*_*ohn的帖子

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Cryptography\MachineGuid是唯一的吗?

页面说明如下:

在Windows注册表中有一个名为MachineGUID的密钥,它具有一个UUID,它是由Windows在安装过程中创建的,理论上应该是该机器唯一的.实际情况并非如此,我经常在机器之间遇到此ID的重复.

我不明白为什么它不会是唯一的,我的意思是Windows使用一些弱算法来生成这个GUID或什么?

windows winapi

8
推荐指数
1
解决办法
2万
查看次数

我可以在同一行上写多个汇编指令吗?

我可以在同一行上编写多个汇编指令,就像使用大多数高级语言一样.或者每个汇编程序是否以不同方式处理此功能?

assembly

6
推荐指数
1
解决办法
4331
查看次数

如何在 NASM 的 BSS 部分创建变量?

我尝试在 NASM 的 BSS 部分创建一个变量:

section .bss
    i DD 12345
Run Code Online (Sandbox Code Playgroud)

但是当尝试创建目标文件时,我收到以下警告:

warning: attempt to initialize memory in BSS section `.bss': ignored
Run Code Online (Sandbox Code Playgroud)

我想这是可以理解的,因为 BSS 部分只能包含未初始化的变量。所以我尝试了以下操作:

section .bss
    i DD 0
Run Code Online (Sandbox Code Playgroud)

但我仍然收到同样的警告。

windows x86 assembly nasm

5
推荐指数
1
解决办法
7081
查看次数

如何获得相同的MAC地址?

我使用以下代码获取MAC地址:

IP_ADAPTER_INFO adpInfo[16];
DWORD len = sizeof(adpInfo);
GetAdaptersInfo(adpInfo, &len );
printf("%02x%02x%02x%02x%02x%02x", adpInfo[0].Address[0], adpInfo[0].Address[1], adpInfo[0].Address[2], adpInfo[0].Address[3], adpInfo[0].Address[4], adpInfo[0].Address[5]);
Run Code Online (Sandbox Code Playgroud)

但是,如果计算机有许多网络适配器(例如:以太网和WiFi),那么每次调用此代码时,我都会获得不同的MAC地址.

有没有办法始终获得相同的MAC地址(例如:以太网).

c c++ winapi

5
推荐指数
1
解决办法
1263
查看次数

为什么运算符的操作数必须属于同一类型?

如果我有这样的事情:

int i = 123;
float f = 123.1;

if (f > i) {} else {}
Run Code Online (Sandbox Code Playgroud)

i将被提升到float和比较将成为if (float > float).我的问题是为什么int变量需要首先被提升为a float,是因为计算机比较容易比较两个普通数而不是试图弄清楚每个数字的位代表然后比较它?

c++ types casting

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

进程虚拟地址空间中其他线程的堆栈在哪里?

下图显示了进程的各个部分在进程的虚拟地址空间中的布局(在Linux中):

在此处输入图片说明

您会看到只有一个堆栈部分(因为我假设该进程只有一个线程)。

但是,如果该进程有另一个线程,该第二个线程的堆栈将位于哪里呢?它会位于第一个堆栈的正下方吗?

linux x86 assembly process

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

当他们说“参数以相反的顺序推动”时,这是什么意思?

cdecl调用约定中,它指出:

Arguments are pushed in the reverse order (right to left)
Run Code Online (Sandbox Code Playgroud)

我的问题是:逆序相对于什么非逆序?与功能文档相关吗?例如,如果我有以下函数文档:

void __cdecl foo (int arg1, int arg2, int arg3)
Run Code Online (Sandbox Code Playgroud)

那么我是否应该只查看函数文档中参数的顺序并反转推入堆栈的增强?

x86 assembly calling-convention

3
推荐指数
2
解决办法
2417
查看次数

FASM 是否使用 Intel 语法?

我尝试在 FASM 中编译以下代码:

mov DWORD PTR [ebp - 4], 1234567  
Run Code Online (Sandbox Code Playgroud)

它给了我一个“无效表达式”错误。但是以下代码有效:

mov DWORD [ebp - 4], 1234567 
Run Code Online (Sandbox Code Playgroud)

那么 FASM 是否使用 Intel 语法(我假设第一行代码符合 Intel 语法)?

x86 assembly fasm

2
推荐指数
1
解决办法
710
查看次数

"通常的算术转换"和"整数促销"是一回事吗?

"通常的算术转换"和"整数促销"是一回事吗?我已阅读的"通常的算术转换"用于使表达的相同类型的操作数,而"整数优惠"用于促进小于类型intint,但在MSDN这两个概念"在通常放置算术转换"仅限.

c c++ integer-promotion

2
推荐指数
1
解决办法
772
查看次数

CPU如何向IO口写入数据?

我很想知道 CPU 如何将数据写入(和读取数据)IO 端口(例如:串行/并行/USB)。

是否有直接向IO口发送数据的指令,例如:

send the number 3 to pin 0 of serial port 1
Run Code Online (Sandbox Code Playgroud)

还是CPU写入指定的内存位置,一旦数据写入该内存位置,数据会自动发送到IO口,例如:

send the number 3 to memory location 0x12345
Run Code Online (Sandbox Code Playgroud)

现在一旦将数字3写入内存位置0x12345,它将自动发送到串行端口 1 的引脚 0。

cpu x86 assembly

2
推荐指数
1
解决办法
1745
查看次数

在用户模式下,x86 CPU可以读取任何寄存器的值吗?

我读到有些寄存器在用户模式下x86 CPU无法修改(我相信这些寄存器称为“特权寄存器”)。

但是,x86 CPU可以在用户模式下读取这些寄存器的值,还是不允许读取?

x86 assembly cpu-registers isa elevated-privileges

2
推荐指数
1
解决办法
171
查看次数