assembly相关内容

为什么不能一个字节推到奔腾IA-32堆栈?

我是来学习,你不能直接推到字节英特尔奔腾的堆栈,任何人都可以给我讲解一下好吗? 这是我一直在给出的原因是因为ESP寄存器字寻址(或者,这是假设在我们的模型),它必须是一个“连地址”。我会承担一些递减32位二进制数不会与寄存器的排列混乱的价值,但显然我不明白就好了。 我已经尝试了一些NASM测试,并拿出如果我声明一个变量(DB咬123),并将它推到堆栈,ESP是递减4(表明它推32位?)。但是, ..
发布时间:2016-07-18 19:51:08 .NET Framework

如何加法器执行无符号整数减法?

假设 A 和 B 签署的正整数,则 AB ,它的计算使用 A + 2 的 B的补充。 例如,在一个4位二进制系统中,用于符号的整数,我们有 7-3 = 0111-0011 = 0111 + 1101 =(1)0100 , 括号内的1是进位。据对符号整数溢出的规则,我们知道有没有溢出,结果是正确的,因此 不过,对于无符号整数,如果将我们计算发生什么 7-3 ?如果我们用我们上面提到的一样: ..
发布时间:2016-07-18 19:50:59 .NET Framework

与NASM尴尬的数据部分行为

我写汇编一些基本的程序,其中我只是做一些函数调用。我在OS X中,使用Mach-O的64位格式。然而,似乎是在我的数据部分的悟性上的瑕疵。据我所知,数据节的目的是用于初始化数据,和我已经决定要初始化的内存两大块,如下图所示: 默认REL全球_main EXTERN _puts段.data 第一DB“消息”,0;空终结 第二DB“消息B”,0.text段_主要: 推RBP; ..
发布时间:2016-07-18 19:50:50 .NET Framework

函数地址不实际的code类地址

调试在Visual Studio 2008(C ++)的一些code,我注意到,在我的函数指针变量的地址不是函数本身的实际地址。这是一个extern“C”的功能。 INT的main(){ 无效(* printaddr)(为const char *)=安培;印刷; //调试显示printaddr == 0x013C1429}地址:0x013C4F10 无效的print(){ ... } ..
发布时间:2016-07-18 19:50:44 C/C++开发

如何打印汇编NASM是多少?

假设我有一个寄存器整数,我怎么能打印呢?您可以显示一个简单的例子code? 我已经知道如何打印一个字符串,如“你好,世界”。 我开发在Linux上。 解决方案 如果你已经在Linux上,没有必要自己做转换。只需使用的printf 来代替: ; ;装配和链接: ; NASM -f精灵的printf TEST.ASM和放大器;&安培; GCC -m32 -o的printf测试的print ..
发布时间:2016-07-18 19:50:35 .NET Framework

有86 I / O端口分配的规范?

我在网上找到了一些信息如下,但不完整的。 http://en.wikipedia.org/wiki/Input/output_base_address http://wiki.osdev.org/I/O_Ports 在哪里下载规范? 解决方案 一个很好的来源的电流的(而不是从1994年)I / O端口映射是芯片组的文档,例如英特尔7系列芯片组家族PCH数据表 (见第9.3节,I / ..
发布时间:2016-07-18 19:50:32 .NET Framework

从C程序加载原始code

我在写一个程序,加载并执行文件code。 但我得到了一个问题:“写”系统调用不起作用。 code成功地加载和执行,但不显示在屏幕上的任何文字。 加载code程序: 的#include< stdio.h中> #包括LT&; stdlib.h中>INT主(INT ARGC,CHAR *的argv []) { unsigned int类型f_size = 0; ..
发布时间:2016-07-18 19:50:22 服务器开发

使用进位标志多字加法

GCC有128位整数。使用这些我可以让编译器使用 MUL (或 IMUL 只有一个操作数)指令。例如: uint64_t中的x,y; 无符号__in128 Z =(无符号__int128)X * Y; 产生 MUL 。 (如果你有兴趣看到这一问题的结束,更新前,为code表示)我已经使用这个来创建一个128×128至256的功能。 现在我想要做的256位加法和我还没有找到一个办法让编译器使 ..
发布时间:2016-07-18 19:50:19 .NET Framework

大会CPU频率测量算法

哪些正在使用的常见的算法来测量处理器频率ω 解决方案 英特尔CPU称为IA32_MPERF和IA32_APERF酷睿双核支持2型号专用寄存器之后。结果 MPERF计算在CPU支持的最大频率,而在APERF实际电流频率计数。 实际的频率由下式给出: 您可以用这个流程阅读 ;阅读MPERF MOV ECX,0xe7 RDMSR MOV mperf_var_lo,EAX MOV mp ..
发布时间:2016-07-18 19:50:17 .NET Framework

GCC:禁止使用某些寄存器

这是一个奇怪的要求,但我有一种感觉,这是可能的。我想是要插入一些编译指示或指令到我的code区域(用C写的),这样​​GCC的寄存器分配会的不的使用它们。 我知道我可以做这样的事情,其中​​的可能的预留该寄存器此变量 寄存器INT VAR1 ASM(“EBX”)= 1984; 注册INT VAR2 ASM(“R9”)= 101; 问题是,我插入新的指令(硬件仿真器)直接和GCC和GAS还没 ..
发布时间:2016-07-18 19:50:07 .NET Framework

如何使用AVX / pclmulqdq在Mac OS X

我试图编译使用pclmulqdq指令present在新的英特尔处理器的计划。我已经安装了GCC 4.6使用MacPorts的,但是当我编译我的程序(它使用固有_mm_clmulep​​i64_si128),我得到 /var/folders/ps/sfjmtgx5771_qbqnh4c9xclr0000gn/T//ccEAWWhd.s:16:no这样 说明:`pclmulqdq $ 0%XMM0 ..
发布时间:2016-07-18 19:50:03 .NET Framework

Windows系统:避免推挤堆栈完整的x86环境

我已经实现 PARLANSE ,使用仙人掌堆栈MS Windows下的语言实现并行程序。堆叠块被分配在每个功能 基础是的只是的大小合适的处理局部变量, 前pression临时推/持久性有机污染物,并呼吁库(包括 堆栈空间的库函数在工作)。这样的堆栈 帧可以是在实践中32字节小并且通常是 除非code做一些愚蠢的事而这一切的伟大工程 导致硬件陷阱......在这一点上的窗口的出现 坚持 ..

如何检查与汇编语言的EIP值?

我想要得到的EIP的当前值与汇编语言注册。这可能吗? 解决方案 假设32位x86,请使用以下功能: get_eip:MOV EAX,[ESP] RET 然后,为了获得EAX EIP的价值,简单地说:通话get_eip ..
发布时间:2016-07-18 19:49:54 .NET Framework