intel相关内容
我想了解最新的x86汇编 从所有通过老386条基本指令 所有的SSE补充至今 我在读一些类似的东西计数SSE5 170新的指令 - 并成为我 敦促知道其中有多少是 在present总 有些人可能会说,这ishard数 (becouse的是,其中一些 是接近,但工作在不同的 类型参数),但我认为它可以 计有一些合理的假设 怎么算有的一 - 既然如此, anybode问题的答
..
我试图创造AT&放一个简单的密码程序,变速箱总成,但我有掩蔽输入的麻烦。我希望发生的是,当用户输入字符,它们出现在屏幕上的星号“。英特尔的语法是比较简单的: MOV啊,08H INT 21HMOV DL,2AH MOV啊,02H INT 21H 本使用英特尔命令来读取输入而不呼应它,而是打印一个星号。 我试图解决AT&放这个问题; T语法,我遇到了一些麻烦。 任何投入将大大AP pre
..
我会根据拍摄主体有问题。 在XMM0寄存器我有一个值,F.E. :-512.000000 而在XMM4:0.000000 我尝试比较第一个值零,我真的不能做到这一点。 comisd XMM0,XMM4 COMISD指令设置在陌生的路上标志,只有JNZ在我的code正常工作后。 我怎么能这样做比较呢? 解决方案 英特尔手册记录如何 COMISD 设置标志。 首先,检查无序与
..
我有一个指向数组的指针,DI 是否有可能去的价值指向两个DI和另一个指针? 例如: MOV BL,1 MOV BH,10 INC [DI + BL] INC [DI + BH] 和,与此相关的,是有一条线运code交换两个寄存器的值? (在我而言,BX和BP?) 解决方案 有关16位程序,唯一支持的寻址方式是: [BX + SI] [BX + DI] [BP + SI] [BP +
..
的<&下;英特尔64和IA-32架构软件开发人员手册卷2B:指令集参考,N-Z >>说: |欧普code * |指南| OP / EN | 64位模式| COMPAT /腿模式|说明| | 6A | PUSH的imm8 | B |有效|有效|按imm8指定。 | | 68 | PUSH imm16 | B |有效|有效|推imm16。 | | 68 | PUSH imm32 | B |有
..
几年前,我需要一种方法做一些基本的128位整数运算使用CUDA: 在CUDA 128位的整数?。 现在我有同样的问题,但是这一次我需要不支持任何形式的128位32位嵌入式系统(英特尔爱迪生)上运行一些基本的128位算术(资金,bitshifts和乘法)。有,但是,64位整数支持直接(无符号长长整型)。 我试过天真地使用ASM code这是回答我最后一次在CPU上,但我得到了一堆错误。我真的不
..
我试图切换执行单元域时,可能理解旁路延迟。 例如,code以下两行完全相同的结果。 _mm_add_ps(X,_mm_castsi128_ps(_mm_slli_si128(_mm_castps_si128(X),8))); _mm_add_ps(X,_mm_shuffle_ps(_mm_setzero_ps()中,x,0X40)); code的哪条线是更好地使用? 该组件输出的第一行
..
我读 http://www.realworldtech.com/sandy-bridge/ 并且我面临着一些问题,在了解了一些问题: 专用堆栈指针跟踪器还美元的Sandy Bridge p $ psent 并将其改名为堆栈指针,省去序列依赖性和 移除一些微指令的。 什么是专用堆栈指针跟踪实际上? 有关的Sandy Bridge(和P4),英特尔仍然使用术语ROB。但它 关键
..
我编译这个C函数: INT计算(INT X,INT Y,INT Z){ 返回X + 3 * Y + 19 * Z; } 和我calc.s得到这个,而我注释发生了什么: .file“calc.c” 。文本 .globl钙 .TYPE钙,@function 计算: pushl%EBP //保存PARAMATERS MOVL%
..
当在 / O2 (释放)模式,由Visual Studio(2015U2)生成的汇编看我看到,这种“手工优化”片C $ C $的c为转换回成乘积: 钙的int64_t(一的int64_t){ 返回(一个与所述; 6;)+(一个与所述;&下; 16) - 一个; } 大会: IMUL RDX,四字PTR [A],1003Fh 所以我在想,如果这是真的比做得它是书面的方式更快,是这样的:
..
我要带一个x86汇编语言程序设计类,并知道某些指令不应该再使用 - 因为他们是在现代的处理器速度慢;例如,环路指令 我一直没能找到被认为德precated,应该避免任何的指令列表;任何指导,将AP preciated。 解决方案 您最好的办法是咨询英特尔官方优化指南。 这是其他的手册可以在这里找到 。
..
在 讲话香草萨特 在第2页幻灯片的身影:
..
我需要开发汇编语言程序并调用从C语言程序(传递一个字符串,并返回一个整数值)。我的装配程序工作正常“独立”。我需要与他们连接在一起帮助。 计划应该是在Intel 8086上运行,我需要使用MASM或EMU8086作为汇编/模拟器。请推荐一个C编译器,也是一个方法,使简单的C程序,它是能够调用组装过程,并获得返回的值。我 如何传递一个字符串,这个外部函数?结果 我怎样才能连接ASM文件和C文件
..
诚然,我都有点愚蠢的问题。基本上,我想知道如果 也有采用Intel处理器能够有效地提供了一些特殊的机制 执行一系列假人,即NOP指令?举例来说,我能想象有 可能是某种pre取标识瑞尔机制,他们丢弃 并试图代替取一些有用的指导。或者,这些瑞尔出动 到执行单元为正常的指令,这意味着我可以大致过程 5 NOP指令每个周期(假设下,有5执行单元) 谢谢, 莱因哈德 解决方案 丢弃它
..
究竟指令 movzbl 0×01(%EAX,ECX%),%EAX 呢? 解决方案 在猜测,这是一样的: MOVZX EAX,字节PTR [EAX + ECX + 1] 即。在EAX + ECX从内存中加载一个字节+ 1和零扩展到全寄存器。 BTW,大部分GNU工具现在有一个开关(如-M英特尔)或配置选项preFER Intel语法。我一定会推荐给看看吧,如果你不这样做AT&安培;
..
我与程序组装使用AT&放工作; T语法上的英特尔。 我迷路了,我怎么转换成一个整数寄存器为ASCII多少? 可以说,我要转换数字10,我会把10号寄存器%eax中。 如果我只是数量48添加到%eax中,ASCII码的标志将是: 我要添加48到1,然后48至0中的数字10。 我该怎么做? 样code: MOV $ 10%EAX #Cut以某种方式的数目。 加$ 48%EAX 解
..
我已经给出了以下任务: 考虑十六进制值的顺序如下: 55 89 83 E5 08 EC 83 E4 F0 31 C9 BA 01 00 00 00 B8 0D 00 00 00 01 01 D1 CA 48 79 31 F9 C0 C9 C3 重新$ P $字节这一序列psents在英特尔80386机器语言子程序在32位模式 在这个子程序中的指令执行时,他们离开在寄存器%E
..
为什么 DS的初始化和 ES 寄存器已手动由程序员完成? 例如: MOV AX,DTSEG MOV DS,AX 在另一方面,在 CS 和 SS 寄存器由操作系统初始化(在 MS-DOS )。为什么会这样? 解决方案 由于 CS 和 SS 寄存器是必不可少的在对比程序执行 DS 和 ES 寄存器这点用户定义的数据段。默认情况下没有数据是在执行程序present这个没什么初
..
我通过一些教程上的
..
据英特尔64和IA-32架构软件开发人员手册锁定信号preFIX“确保处理器具有独占使用任何共享内存,而信号断言”。这可以是一个在总线或高速缓存锁的形式。 但是 - 这就是我要问这个问题的原因 - 它不是我清楚,如果这个preFIX还提供任何记忆障碍 我在一个多处理器环境NASM显影和需要实现具有可选获取原子操作和/或释放的语义。 所以,我需要使用MFENCE,SFENCE和LFENCE指令
..