小编yos*_*o78的帖子

如何只设置ARM汇编的溢出标志?

在我的 Raspberry PI 上学习 ARM 汇编时,我一直在摆弄 Flags。我设计了仅设置零标志、仅设置负数和仅设置进位标志的方法。但是我想不出一种方法来仅设置溢出标志。是否可以?任何帮助,将不胜感激!

挑战是不要写信给cpsr(因为出于各种原因我不允许这样做,否则这将是最好的解决方案,因为它是最好的解决方案)

编辑:仅设置溢出标志,其他所有标志为零/清除。仅使用算术或移位。NZCV = 0001

Edit2:为了进一步澄清,我认为需要多个指令才能实现这一点。

assembly flags arm raspberry-pi

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

Alt Tab Win32 消息队列和 SetWinEventHook

我正在尝试Alt+Tab使用 Win Event Hook进行检测SetWinEventHook。然而Alt+Tab,即使我有消息泵(我在 Windows 10 上),钩子的回调也永远不会触发

Alt+Tab当我偶然发现这一系列帖子时,我想到了这样处理的想法:

Alt Tab 覆盖 Win32 标识符

SetWinEventHook 没有捕获任何事件

其中描述了使用 WinEventHook 来获取Alt+Tab消息(我不知道它在现代是否有效)。我发现Raymond Chen 的一篇文章详细介绍了它(但是它不再起作用了,我不知道为什么,但它应该起作用。)

Alt+Tab如何在事件回调中获取消息?

编辑:这是我的例子,模仿我大规模做的事情(小程序不起作用)并消除评论中的疑问。这是整个程序加上编译脚本,它显示了我正在尝试执行的操作,但根本不起作用(我做错了什么?上面的 Raymond Chen 程序似乎受其影响)。我使用的是 Windows 10

(编辑,我发现 EVENT_MIN 和 EVENT_MAX 在挂钩中给了我事件,但从来没有 EVENT_SYSTEM_SWITCHSTART 和 EVENT_SYSTEM_SWITCHEND 事件)

编译.bat:

@echo off
if not defined DevEnvDir (
    call "C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Auxiliary\Build\vcvars64.bat"
)

if "%Platform%" neq "x64" (
    echo ERROR: Platform is not "x64" - previous bat call failed.
    exit …
Run Code Online (Sandbox Code Playgroud)

c++ winapi message-queue visual-c++

5
推荐指数
0
解决办法
757
查看次数

是否有非循环无符号32位整数平方根函数C

我见过浮点位黑客产生平方根,如此处所示快速浮点平方根,但此方法适用于浮点数。

是否有类似的方法可以在不循环 32 位无符号整数的情况下求整数平方根?我一直在网上搜索,但没有看到

(我的想法是纯二进制表示没有足够的信息来做到这一点,但由于它被限制为 32 位,我会猜测)

c square-root unsigned-integer

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

C 预处理器字符串化输入\换行符

因此,就像许多过去处理过 OpenGL 着色器的人一样,一直希望能够编写它们而无需额外的程序将它们转换为字符串。所以我正在寻找一种用“\n”替换源代码中的 Enter presses\newline 字符的方法,例如:

const char *sShaderSrc =
ConvertTextToString(
#version 330 core

layout (location = 0) in vec3 aPos;
layout (location = 1) in vec3 aNormal;

uniform mat4 mModel;
uniform mat3 mNormal;
uniform mat4 mViewProj;

varying vec3 vNormal;

void main()
{
   gl_Position = (mViewProj *mModel) * vec4(aPos,1.0) ;
   vNormal =  mNormal*aNormal;
}
)
;
Run Code Online (Sandbox Code Playgroud)

然后预处理器会将其转换为

const char *sShaderSrc =
"#version 330 core\n\nlayout (location = 0) in vec3 aPos;\nlayout (location = 1) in vec3 aNormal;\n\nuniform mat4 mModel;\nuniform mat3 mNormal;\nuniform …
Run Code Online (Sandbox Code Playgroud)

c c++ c-preprocessor

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

D3D12 CreateHeap对齐,MSDN使用1024还是1000来定义KB

我正在尝试在 DirectX12 中使用CreateHeapand 。PlacedResources然而,对于 CreateHeap 来说,它需要一个D3D12_HEAP_DESC“应用程序应该传递SizeInBytes(的字段D3D12_HEAP_DESC)值,该值是有效对齐的倍数”的地方。然后他们去显示一个对齐D3D12_DEFAULT_RESOURCE_PLACEMENT_ALIGNMENT #defined as 64KB.,其中说 64KB 是对齐。

Microsoft DirectX12 是否使用 65536 字节作为 64KB 或 64000 字节的定义(因此基本上 1024 或 1000 字节是 Microsoft 的 KB 定义)?我不想浪费任何字节,而且我不知道在哪里可以找到微软这些类型单位的定义。正如维基百科显示1024 KB作为千字节的传统单位,因此微软标准是否是最新的也是一个问题。

directx msdn units-of-measurement visual-c++ directx-12

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