ia-32相关内容

FPU IA-32 SIGFPE,算术异常

我有这个code以下的问题。它是在IA-32架构气体汇编语法。它产生算术异常, FSQRT 指令之后。 SetDouble 是 INT 类型的值 0x0200 和输入是一个浮点数。我使用的GCC与 -m32 标志编译这一点。在哪里可以我犯的错误有人点。 pushl%EBP MOVL%ESP,EBP% FINIT FLDCW SetDouble FLD输入 FLD输入 fmulp FLD1 FA ..
发布时间:2016-07-18 21:38:27 .NET Framework

NASM:发出的非标量(链接时)MSW值

我试图定义一个常量 IDT(中断描述符表)中的作品=“htt​​p://www.nasm.us/”相对=“nofollow”> NASM 以及这样做,我需要发射到一个数据表中的双字地址的高字的未得到解决,直到链接时的。有没有办法做到这一点? 下面的中断处理程序: ;;;中断3(断点)处理。现在,只需拨开屏幕和暂停。 8对齐 INT3: MOV [0xb8000] ..
发布时间:2016-07-18 21:32:44 .NET Framework

IA32寄存器地址

我有扔我从几个网格化之间的矛盾。我做一个任务,我必须检讨 GDB 组装code,找到正确的输入,使得C程序的工作。为了测试这个,我进入一个测试字符串它由一些数字,并通过步/读大会predict其行为,并找出一个解决方案。 这里的主要问题:在一个点上,我的整个输入字符串存储在%EAX 注册。当我打电话: X /一$ EAX 它返回一个十六进制我以为是%EAX 的地址。在这一点上的六角的最后 ..
发布时间:2016-07-18 21:25:05 .NET Framework

跳进指令的中间 - 在IA-32

为什么IA-32让我们跳进指令的中间? 我怎么可以使用这个优化建筑学的特点,当我在汇编正在写? (明显的情况下,我们身边要保存命令的寄存器里面的编码和随后激活此命令)? 解决方案 IA-32能够跳跃到一个指令的中间由于历史的原因。 x86指令集是在由8080的predecessor到第一个“86”使用的指令集连续层的结果 - 这把我们带回到70年代末“。在那个时候,RAM是非常昂贵的,这 ..
发布时间:2016-07-18 21:21:46 .NET Framework

了解递归IA32汇编调用

我试图做一些练习来获得更舒适的IA32装配和上午平移组件code这个递归片段来理解C $ C $ç挣扎了一下。他们给了我们一个提示,在code的所有功能只给一个参数,但我对IA32栈的理解还是有点差。 .globl酒吧 .TYPE吧,@function 酒吧: pushl%EBP MOVL%ESP,EBP% MOVL 8(EBP%),%EAX ADDL $ 10%EAX popl%EBP RE ..
发布时间:2016-07-18 20:52:05 .NET Framework

可以分支prediction崩溃我的程序?

走这本书,叫计算机系统结构的低谷第3章:一个程序员的角度来看,更说明了像执行 为test1%EAX,EAX% cmovne(%EAX),EDX% 是无效的,因为如果prediction失败,那么我们将不得不取消引用NULL。它也指出,我们应该使用分支code。 然而,将未使用条件跳转导致相同的结果?例如: .L1: JMP *%eax中为test1%EAX,EAX% JNE .L1 是否 ..

什么是之间和QUOT的差异; CLD"和"性病QUOT;在汇编语言指令?

好了,我知道,CLD清方向标志和STD设置方向标志。 但什么是在设置和清除方向标志意义呢? 解决方案 该方向标志被用来影响其中的 REP preFIX。还有一些由这个标志直接影响指令,例如 MOVS , LODS ,中汽南方,和许多其他。 在简单地说,当方向标志为0,说明通过增加数据指针每次迭代后(直到 ECX 工作为零或其他一些条件,视 REP preFIX),而如果该标志为1时,指 ..
发布时间:2016-07-18 20:36:32 .NET Framework

XOR寄存器,寄存器(汇编)

不时我们来分​​析汇编code片(IA32) 比通常更我碰到过,看起来像这样的指令: 异斧,斧 或其它寄存器藏汉: XOR DX,DX ,异人,人 ... 这究竟做什么? (斧斧异总是给人0?) 解决方案 这是一个常见成语汇编到寄存器设置为0。 异斧,斧对应 AX = AX ^ AX 其中,因为你已经通知,实际上是 AX = 0 。 如果我没有记错的主要优点是,它的code尺寸比 ..
发布时间:2016-07-18 20:22:41 .NET Framework

为什么IA-32有一个非直观呼叫者和被呼叫者寄存器保存惯例?

有关IA-32的通用的调用约定说: •被调用者保存寄存器 EBX%,%ESI,EDI%,%EBP,ESP% 被叫方不得改变这些。 (或返回前恢复调用者的值。)•来电保存寄存器 %eax中,EDX%,ECX%,条件标志 来电节省了这些,如果要preserve他们。被叫方可以自由地揍。 为什么会出现这种奇怪的约定存在吗?为什么不能调用另一个函数之前所有的寄存器保存?或者被调用者保存和 PUSHA ..
发布时间:2016-07-18 20:21:19 .NET Framework

内联汇编与双precision号工作(GCC,IA-32)

我刚开始学习汇编在我的计算机科学类,我有一个分配使用指定的舍入模式为圆一个浮点值。我试图实现这一点使用 FSTCW , FLDCW 和 FRNDINT 。我修改整控制位,轮数,然后还原previous控制位(分配的要求)。 当前突出的问题是,指令 FLD%1 似乎加载错误的值到 ST(0)浮点寄存器(例如,如果我调用函数的2.6207值,数量-1.9427(...)E-29被加载到寄存器)。这可 ..
发布时间:2016-07-18 20:13:17 .NET Framework

大会:从标准输入读取整数,增加它并打印到stdout

I $ C $光盘IA32以下组件脚本。它应该读取从标准输入一个数字,增加它并打印到标准输出,但它并没有像预期的那样,它不会打印出任何东西(也许从标准输入读不终止或一些与印刷有误?) .section伪的.text .globl _start_开始: MOVL $ 3,%EAX#使用系统调用3(读)从标准输入读取 MOVL $ 0%EBX#从标准输入读取(FD 0) ..
发布时间:2016-07-18 20:01:08 服务器开发

LEA或ADD指令?

当我手写组装,我一般选择的形式 LEA EAX,[EAX + 4] 在形式.. 添加EAX,4 我听说LEA是一个“0时钟”指令(如NOP),而“添加”不是。但是,当我看着编译器产生的大会我经常看到用来替代第一个后一种形式。我足够的信任编译器聪明,所以任何人都可以提供一些线索上哪一个更好?哪一个是更快?为什么编译器选择后一种形式了前者? 解决方案 之间的一个显著差异 LEA 和添加 ..
发布时间:2016-07-18 19:56:15 .NET Framework

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

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