assembly相关内容
免责声明:无法用言语形容我是多么讨厌AT& T公司风格的语法 我有,我希望是由寄存器重挫造成的一个问题。如果不是这样,我有一个更大的问题。 我用的第一个版本是 静态无符号长长rdtscp(无效) { 无符号整型HI,LO; __asm__ __volatile __(“rdtscp”:“= A”(LO),“= D”(HI)); 返回(无符号很长很长),罗|
..
我在读Linux内核源代码code(3.12.5 x86_64的)了解进程描述符是如何处理的。 我发现来获得当前进程的描述符,我可以使用current_thread_info()函数,该函数执行如下: 静态内嵌结构的thread_info * current_thread_info(无效) { 结构的thread_info * TI; TI =(无效*)(this_cpu_re
..
我所描述的一个问题:如何执行没有嵌入汇编用C循环移位。为了更具体,如何旋转移位32位 INT 。 我现在正在解决这个问题,键入得到long long int 的帮助,但我认为它有点丑陋,想知道是否有一个更优雅的方法 亲切的问候。 解决方案 维基百科的code产生次优ASM(海合会包括分支或CMOV)。看到这个问题在C ++中循环移位(旋转)操作(或我的答案)的最佳实践。
..
您好,我需要一些帮助理解什么是在本届大会code回事: .file“mystery.c” 。文本 .globl谜 .TYPE神秘,@function 神秘: pushq%RBP MOVQ%RSP,RBP% MOVL%EDI,-20(RBP%) MOVL $ 1,-16(RBP%) MOVL $ 0 -12(RB
..
什么是以下行的意思是: ... 401147:FF 24 C5 80 26 40 00 jmpq * 0x402680(,RAX%,8) ... 什么是内存中的地址前面的星号是什么意思? 此外,这是什么意思时,存储器访问方法缺少它的第一个寄存器值? 一般其类似的信息(“%寄存器”,%RAX,8),但在这种情况下,它不具备第一寄存器。 任何提示? 解决方案 其实这计算表JMP ,其
..
当我看到一个C程序的组装code,是这样的: 的hello.c的emacs 铛-S -O的hello.c -o hello.s 猫hello.s 函数名称以下划线pfixed $ P $(例如 callq _printf )。这是为什么做,它有什么优势呢? 例如: 的hello.c 的#include<&stdio.h中GT; #包括LT&;&stdlib.h中GT; #包括LT&
..
我在升级Visual Studio 2010中的项目,针对银泰RTOS的过程。 code,执行铸造过程中无法链接。当调查“内联汇编”输出文件,事实证明,对于某个整数浇注操作,VS2013是生成汇编指令调用__dtol3,__dtoui3,__dtoul3,__ltod3和__ultod3。问题是,在的INtime库不包含这些函数的定义。我已经验证了VS2013确实为Win32的目标Debug和相同
..
由于在这个网上资源是稀少的,我会为未来搜索的好处,首先列出了IA-32汇编语言的寻址模式(NASM),然后跟进一个简单的问题。 寄存器寻址 MOV EAX,EBX:复制什么是EBX到EAX MOV ESI,VAR:复制VAR的地址(比如0x0040120e)进入ESI 立即寻址(第二个操作数是一个立即数) MOV BX,20:16位寄存器BX得到实际值20 直接内存
..
gettimeofday的是本页面(仅搜索的x86-86系统调用 gettimeofday的在框中): INT的gettimeofday(timeval结构*电视,结构时区* TZ); 我认为disas应该很容易anough,只要prepare两个指针,并调用相关的系统调用。 但其disas是做多:(GDB)disas的gettimeofday 汇编code的功能函数gettimeofda
..
我想如下堆栈推64位地址, __ ASM(“pushq $ 0x1122334455667788”); 但我得到的编译错误,我只能在下列方式推, __ ASM(“pushq $ 0x11223344”); 有人可以帮助我了解我的错误? 我是新来组装,所以请原谅我,如果我的问题听起来很愚蠢。 解决方案 X86-64有一些有趣的怪癖,这是不是就算你熟悉的32位x86 ... 明显
..
我想用其操作完全在32位操作数 DivMod 功能。在RTL的实施在16位变量返回的值。它的声明是: 程序DivMod(分红:红衣主教;除数:字; VAR结果,余数:字); 所以,我不能使用,因为我的投入可能会溢出的返回值。 天真帕斯卡尔实施看起来是这样的:程序DivMod(被除数,除数:红衣主教;出商,余数:红衣主教); 开始 商:=股利DIV除数; 余数:= MOD股息除数; 结
..
我想创建16位MASM大会的x86睡眠/延迟过程,将,比如说,在屏幕上打印字符每500毫秒。 从我已经做了研究,似乎有三种方法来实现这一点 - 我想用使用CPU时钟周期一个 请注意我在Mac OS X雪豹运行Windows XP通过VMware Fusion的 - 我不知道这会影响什么。。 可能有人请点我在正确的方向,或提供code我可以调整的工作一块?谢谢! 在code,我发现应该是打印
..
我已经打开了一个文件,下面的code,读入缓冲区,然后关闭该文件。 关闭文件系统调用需要的文件描述符在EBX寄存器。 EBX寄存器得到读取系统调用之前的文件描述符号。我的问题是我要救EBX寄存器堆栈上或其他地方之前,我做read系统调用,(可以诠释80H垃圾EBX寄存器?)。然后恢复EBX寄存器为close系统调用?或者是code我有以下罚款和安全? 我已运行低于code和它的作品,我只是不知
..
我不是特别大会和ARM的经验,但我可以在这上面写几个程序,我想看看他们的ARM-搭载了Android设备(的Nexus S)上的运行方式。什么是包括大会code文件到Android项目的程序?我只能从本地code调用它,或者从Java也? 解决方案 您可以在Android使用Java本地接口和Android NDK调用组件。 塞德里克提到使用 ASM 关键字,而我preFER包括汇编源$
..
如果我们有这个code: INT富= 100; INT和放大器;基准= foo的; 为int *指针=&放大器;参考; 有在参考的数据和指针的数据没有实际的二进制差异。 (它们都包含在内存中的位置富) 第2部分 那么,做指针和引用(之间的所有其他差异
..
在程序启动(Linux中,小精灵) - 有在 EAX , EBX 零等,或有可以是任何东西(我没有做任何电话或使用的extern libraryies)?在我的机器真是这样,我可以这样写行为ASM programms的时候继电器? 解决方案 这在ABI完全取决于每个平台。既然你提到 EAX 和 EBX 让我们来看看有什么针对x86的情况。在 FS / binfmt_elf.c 线#972,
..
我有涉及手写装配AT&放一个项目; T语法,做工精细与海湾合作委员会,而不是由我做再加上我不是很了解装配其试图与Clang的建立它的时候表现出奇怪的问题 LLVM文档提到,“大多数X86指标”使用LLVM的集成组装,而不是制度汇编;作为一个可能的解决方法,我想明确地使用了后者。我(当然,谷歌)都没有成功找到关于如何做到这一点的信息。 问:有没有办法询问或者说强制锵/ LLVM使用该系统,而不是
..
注意这个code: 的#include<&stdio.h中GT; 一个无效(INT A,INT B,INT C) { 炭缓冲器1 [5]; 炭缓冲器2 [10]; }诠释的main() { 一个(1,2,3); } 之后: GCC -S交流转换器 这是命令显示组装我们的源$ C $ C。 现在我们可以在主函数中看到的,我们从来不使用“推”命令来推动的论点
..
假设我制作了一组类抽象的东西,现在我担心我的C ++编译器是否能够剥离的包装材料和放出真干净,简洁,快速code 。我如何找出编译器决定做? 我知道的唯一方法是检查拆卸。这非常适用于简单的code,但这里有两种弊端 - 编译器可能做到这一点不同的,当它编译同一code试也是该机code分析是不平凡的,所以它需要努力。 我还能如何找到编译器决定如何执行我codeD在C ++? 解决方案
..
我无法在有关新的X code布局信息的方式找到了。如何查看我的源文件的拆卸,而不仅仅是C ++ code? 解决方案 这是我在一个非常彻底的X $ C $的C 4审核阅读(的 http://fireballed.org/linked/2011/03/09/x$c$c-pilkington/ )时,显示一个文件汇编code能力现在已经以x code 4.我猜你总是可以设置一个方法断点,看看它
..