assembly相关内容

用一个常数司通过移位,并添加/减去

大家好我试图用一个无符号常量来划分只用移位和加法/减 - 我有这个没有问题,如果它是乘法,但我是一个有点分裂难倒。 举例来说,可以说不断的除数是192和让说,分红为8000 “完整的结果”Y =192分之8000= 41(假定我没打扰小数位) Y = 8000 >> 8 ... 31 Y = 8000 >> 7 ... 62 但我怎么得到更准确的解决方案? 非常感谢! 解决方案 ..

大会说明找到多少线程在多核心系统启用

我工作一个最基本的系统,我需要启动后的某个确定有多少核心和线程被启用,这样我就可以送他们SIPI事件上。我也希望每个线程知道它是哪个线程。 例如,在HT单核配置中启用,我们有(例如,英特尔凌动): 线程0 - >核心0线程0 线程1 - >核心0线程1 虽然没有HT我们有一个双核的配置(例如,酷睿2):线程0 - >核心0线程0 线程1 - >核心1线程0 ..
发布时间:2016-07-18 19:58:34 .NET Framework

x86_64的:是否有可能"在线替代" PLT / GOT参考?

我不知道这个问题的一个很好的主题是什么,但在这里我们去... 为了迫使code局部性/紧凑性为code的一个关键部分,我正在寻找一种方法,通过一个“跳槽”来称呼在外部(动态加载)库中的函数(一个ELF R_X86_64_JUMP_SLOT 搬迁)直接在调用点 - 什么连接器通常把成PLT / GOT,但这些右内联在调用点 如果我像模拟电话: 的#include<&stdio.h中GT; ..
发布时间:2016-07-18 19:58:31 .NET Framework

获取汇编指令大小

我需要阅读说明书一个接一个从内存小code段,我要找出我在存储器中的指令大小。 以下是只是原始拆解code的例子来解释我的问题: (GDB)disas / R 0x400281,+ 8 汇编code的转储从0x400281到0x400289: 0x0000000000400281:48 89 C7 MOVQ%RAX,%RDI 0x0000000000400284:B0 00 ..
发布时间:2016-07-18 19:58:30 .NET Framework

是否有一种运行C ++库汇编周围?

有关我的小爱好的项目,我需要在运行时从C ++程序发出机器code。我有基址0xDEADBEEF,并希望这样写的: 汇编器一个((无效*)0xDEADBEEF); a.Emit()&所述;&下; 推(注册:: EAX)LT;< 推(注册:: EBX)LT;< JMP(0xFEFEFEFE); 内联汇编不是我的选择,因为生成的机器code是依赖于程序状态。 是否有人知 ..
发布时间:2016-07-18 19:58:23 C/C++开发

从x86汇编语言调用C函数

是否有可能产生使用GCC的C函数汇编语言功能,让他们可以从汇编语言程序调用?我知道,GCC编译C到机器code(这可以很容易地分解成汇编语言),我已经知道,它可能的用C 联汇编语言功能,但我还没有找到一种方法,从汇编语言程序调用C函数,这基本上是这样的倒数。 在这里,我试图在x86汇编程序内联C函数。如果内联是不可能的,那么有没有一些其他的方式,从汇编语言程序调用C函数? .686p .MO ..
发布时间:2016-07-18 19:58:20 .NET Framework

装配到比较两个数

什么是汇编语法,以确定哪两个数字是更大? 什么是它的较低水平(机$ C $三)?我们可以去甚至更低?一旦我们得到的位水平,会发生什么?它是如何重新$ P $ 0的psented和1? 解决方案 从汇编程序而异的汇编。 大多数机器提供的寄存器,符号名 像R1或EAX(英特尔X86),和具有指导 像“CMP”名字进行比较。而对于一个比较 指令,你需要另外一个操作数,有时 寄存器,有 ..
发布时间:2016-07-18 19:58:17 .NET Framework

真正的随机数与C ++ 11和RDRAND

我已经看到,英特尔似乎已经纳入一个新的装配函数来获取硬件获得真正的随机数。该指令的名称是 RdRand ,但只有细节少量似乎访问它在互联网上:的 http://en.wikipedia.org/wiki/RdRand 我关于这个新指令及其利用C ++ 11的问题有以下几点: 与 RdRand 真正的随机产生的随机数? (从不相关白噪声或量子过程产生的每一位?) 它是Ivy Bridg ..
发布时间:2016-07-18 19:58:13 C/C++开发

使用模拟只有不断变化可变比特转变?

我试图找出实际上并没有使用可变移运或任何分支机构执行间接移左/右操作的一种方式。 具体PowerPC处理器我的工作有怪癖,转向按恒定眼前,像 INT ShiftByConstant(INT X){返回X<< 3; } 快,单运,和超标量,而换档变量,如 INT ShiftByVar(INT X,int y)对{返回X<< ÿ; } 是 ..
发布时间:2016-07-18 19:58:10 .NET Framework

使用RDTSC获取CPU周期 - 为什么RDTSC的价值总是增加吗?

我想在一个特定的点,以获得CPU周期。我用这个功能在这一点: 静态__inline__无符号长长RDTSC(无效) { 无符号长长整型X; __asm​​__挥发性(“.BYTE为0x0F,0X31”:“= A”(X)); 返回X; } 问题是,它总是返回的增加编号(每次运行)。这是因为如果它是指绝对时间 我使用的功能不正确? 解决方案 只要你的线程停留在相同的C ..
发布时间:2016-07-18 19:58:07 服务器开发

在C中,给出的参数变量列表,如何建立使用这些函数调用?

假设有莫名其妙存储参数列表,例如数组 给定一个函数指针,我怎么能让它调用传递参数存储的名单? 我并不想传递数组作为确定参数。你猜对了,好吗?我想它的每个元素作为参数传递。数组只是为了说明问题,我可以存储一些元组结构的参数。此外,该看的我手头上有一个函数指针,并可能在字符串格式的签名即可。我并不想只是定义一个函数,能够应对可变参数列表。 我看到如何做到这一点的唯一方法是通过采用组件(由 __ ..
发布时间:2016-07-18 19:58:03 .NET Framework

" CPUID"前" RDTSC"

有时我遇到code与 RDTSC 读取TSC指令,但电话 CPUID 权利之前。 为什么叫 CPUID 有必要吗?我意识到这可能是与有TSC的值不同的内核,但什么究竟的,当你调用序列中的这两个指令会发生什么? 解决方案 这是为prevent乱序执行。请参见这里的全部细节,下面的相关位: 奔腾Pro和奔腾II处理器支持乱序执行指令可以在另一个顺序编程你他们执行。这可能是错误的来源,如 ..
发布时间:2016-07-18 19:57:56 .NET Framework

MASM / NASM差异

什么是NASM和MASM装配之间的语法差异? 解决方案 在NASM文档的第2.2节的题目是的快速入门用户MASM 其中列出了NASM和MASM之间的重要区别。 ..
发布时间:2016-07-18 19:57:52 .NET Framework

如何打印的argv [0] NASM?

我要存储的argv [0] 在寄存器中,然后打印出来,但我发现了一个段错误,当我跑我的汇编程序。 追踪: $ NASM -f男子气-o scriptname.o - $ P $ _ PFIX scriptname.asm $ LD -o脚本名称scriptname.o -arch i386的-lc -macosx_version_min 10.6 -e _start -no_pie $ ..
发布时间:2016-07-18 19:57:50 .NET Framework

如何内核加载到利用大会CD-ROM的内存(NASM)

我正在写一个引导程序和内核为自己和两个引导程序和内核会在CD-R烧坏,并作为CD-肝功能。它不是一个Linux的CD-Live或其他什么东西,完全是我自己的引导程序和内核。我不想使用其他booloaders(即GRUB),所以请不要建议我使用它们。 下面是我的问题: 在我的引导程序ASM code,我想我的内核和内核入口加载到RAM中的从CD-ROM ​​(而不是从硬盘或软盘),并让我们假设, ..
发布时间:2016-07-18 19:57:47 .NET Framework

如何可变参数的函数找出机器code参数的数目?

如何能像可变参数的函数的的printf 的找出他们得到的参数是多少? 的论点显然是不作为(隐藏)参数传递的量(见的调用这里ASM例如给printf )。 有什么诀窍? 解决方案 的技巧是,你告诉他们莫名其妙地别的。对于的printf 你必须提供一个格式字符串其中甚至包含类型信息(这可能是不正确的,虽然)。提供此信息的方式主要是用户合同,往往容易出错。 对于调用约定:通常情况下,参数被 ..
发布时间:2016-07-18 19:57:34 .NET Framework

为什么IA32不允许内存到内存MOV?

在英特尔架构IA32,像MOVL指令,MOVW不允许都是内存位置操作数。例如,指令MOVL(%eax中),(%EDX)是不允许的。为什么呢? 解决方案 答案涉及的RAM更全面的了解。简单地说,RAM只能在两种状态,读模式或写模式。如果你想在RAM中的一个字节复制到另一个位置,你的必须的有RAM以外的临时存储区域,你从阅读切换到书写。 这当然是可能的体系结构能有这样的RAM到RAM中的指令 ..
发布时间:2016-07-18 19:57:30 .NET Framework

替代x86汇编“呼叫”的指令?

什么是一些替代x86的调用指令? 也许是这样的返回地址推则跳转? 也就是其用于获得在存储器中的当前位置的命令 解决方案 调用实际上为您完成此例如: CALL my_func,并将 会做类​​似推ret_address JMP my_func,并将 和随后的RET调用只想用你只是被推到JMP回来意义上的地址。是否有你不希望使用CALL或者是不适用于你一个具体的原因是什么? 在 ..
发布时间:2016-07-18 19:57:27 .NET Framework