Articles of x86

为什么可以将MemoryBarrier作为xchg的调用来实现?

在MSDN http://msdn.microsoft.com/en-us/library/windows/desktop/ms684208(v=vs.85).aspx,MemoryBarrier是作为一个调用xchg实现的。 // x86 FORCEINLINE VOID MemoryBarrier ( VOID ) { LONG Barrier; __asm { xchg Barrier, eax } } 我在“软件开发人员手册”中找不到一些资料。 请告诉我原因。

什么是在Windows上使用的GS寄存器?

我已经find了FS寄存器的MSDN文档: https://msdn.microsoft.com/en-us/library/ms253960(v=vs.90).aspx 其中规定: “在x86环境中,FS寄存器指向线程信息块(TIB)结构的当前值。 但是我似乎无法在基于Windows的环境中find有关GS寄存器目的的严格文档。 有人能告诉我在哪里看,或给出一个解释?

在系统调用期间,Windows如何切换到pipe理员模式?

在系统调用期间,Windows如何切换到pipe理员模式? 我听说过有关“陷阱0”的一些事情,但这似乎不是x86指令。 我通过一些系统调用,但我找不到任何。 在用户模式下运行很多Windows系统调用吗? 哪些在监督模式下运行?

Windows初始执行上下文

一旦Windows在内存中加载了一个可执行文件并将其转移到入口点,那么寄存器和堆栈中的值是否有意义呢? 如果是这样,我在哪里可以find更多关于它的信息?

与Win32 API调用如何在汇编中工作混淆

我不知道如何更好地问这个问题,但是为什么呢? call ExitProcess 这样做是一样的吗? mov eax, ExitProcess mov eax, [eax] call eax 我会认为这些是相同的: call ExitProcess mov eax, ExitProcess call eax

如何从Windows x64的汇编程序访问C数组?

我已经写了一个汇编函数来加速image processing的一些事情(图像是用CreateDIBSection创build的)。 对于Win32,汇编程序代码没有问题,但是对于Win64,当我试图访问我的数组数据时,就会发生崩溃。 我把相关的信息放在一个结构体中,我的汇编程序函数得到一个指向这个结构体的指针。 结构指针被放入ebx / rbx中,并且通过索引来读取结构中的数据。 任何想法我做错了什么? 我使用nasm与Visual Studio 2008和Win64我设置“默认rel”。 C ++代码: struct myData { tUInt32 ulParam1; void* pData; }; CallMyAssemblerFunction(&myData); 汇编代码: Win32的: … push ebp; mov ebp,esp mov ebx, [ebp + 8]; pointer to our struct mov eax, [ebx]; ulParam1 mov esi, [ebx + 4]; pData, 4 byte pointer movd xmm0, [esi]; … […]

在运行Windows XP的Intel x86机器上的内存位置1处是什么?

我在Intel x86机器上运行Windows XP,并且在内存位置0x00000001的指令中出现错误。 我并不担心debugging错误,但我有兴趣知道在内存的乞讨中通常会放置什么指令。 我编写的低级代码的唯一处理器是PIC微控制器,而且我知道第一个内存位置是GOTO,然后是中断向量。

x86 – 获取方向标志(DF)的当前状态

我试图从EFLAGS寄存器中获取DF的值。 我尝试使用LAHF指令,但是根据Intel X86文档,指令仅加载SF, ZF, AF, PF, CF标志。 但是,我试图find一个指令,将给我的DF寄存器的价值。 提前致谢。

在SDK rev 18更新中找不到基于x86 x86的系统映像

昨天我已经更新了Android SDK到rev 18,但是API level 14和15只有ARM EABI v7a系统映像,而在本教程中他们说我可以使用基于x86的系统映像来获得更好和更平滑的仿真器性能。 我检查了sdk-folder \ tool \和“emulator-86.exe”也存在,但没有x86 AVD创build运行。 我也安装HAXM,它在我的机器中工作正常。 在GUI AVD创build中,CPU / ABI下拉框也被禁用每个API级别。 那么我在哪里可以find并使用基于x86的系统映像为我的Android SDK? 任何帮助表示赞赏。 谢谢

在什么情况下,我需要为x86-64汇编函数设置SEH展开信息?

64位的Windows ABI定义了一个通用的exception处理机制 ,我相信这个机制是跨C ++exception和结构化exception共享的,即使在其他语言中也是如此。 如果我正在编写x86-64汇编程序以在nasm编译并链接到C或C ++库,那么在生成展开信息等方面,我需要在Windows上进行哪些调整? 我不打算直接在汇编代码中生成任何exception,但我想如果用户提供的缓冲区是无效的,代码可能会得到访问冲突。 我希望尽可能最less的写这个工作,特别是因为看起来nasm对生成展开信息的支持很差,使用MASM不是这个跨平台项目的一个选项。 我确实需要使用(因此保存和恢复)非易失性寄存器。