x86-64相关内容

编译64位Linux内核与海湾合作委员会

在尝试使用gcc编译一个64位的Linux内核,我看到了 以下错误: 内核/ bounds.c:1:错误:code模式“内核”不支持32 位模式 内核/ bounds.c:1:对不起,没有实现:64位模式不编译 这是什么的gcc -v 报告: 使用内置的规格。 目标:i586系统 - 红帽Linux的 配置有:../configure - preFIX = / USR --mandir ..
发布时间:2015-11-28 12:23:14 服务器开发

使用额外的16位在64位机

我读了一个64位的机器实际使用的只有48位(具体而言,我使用英特尔I7)。 我期望额外的16位(位48-63)是不相关的地址,并且将被忽略。 但是,当我尝试访问这样的地址,我得到了一个信号EXC_BAD_ACCESS。 我的code是: INT * P1 =放大器; VAL; INT * P2 =(INT *)((长)P1 | 1LL<< 48); //设置位48,这应该是无关 I ..
发布时间:2015-11-28 12:22:08 其他开发

64位模拟器X code Mach-O的连接错误

我一直在开发以x code iOS应用程序。它编译并经常在模拟器完美运行,但是当我打开模拟器设备到64位,它失败,13个新的警告和37个新的错误,所有这一切都是相关的(我认为)与我使用的外部库名为 ObjectiveDDP ( https://github.com/boundsj/ObjectiveDDP )。人有类似的问题,但我的理解是,他们理应固定在最近发布的更新的框架,但在我结束此更新是没有 ..
发布时间:2015-11-28 12:21:51 其他开发

与Mac OS X的64位处理器上运行32位汇编

我有我的64位的Mac上运行OS X 10.9.5上运行32位汇编​​的一个问题。我也有NASM 08年11月2号安装。我目前正在读汇编语言一步一步由Jeff Duntemann。在这本书中,他规定了在Linux操作系统的32位汇编​​指令。我怎么能在我的64位Mac OS X的计算机上运行该程序。 ; eatsyscall.asm 段.data;含初始化数据段 EatMsg:DB“吃在乔斯! ..
发布时间:2015-11-28 12:21:19 其他开发

的修改到%ESP引起SIGSEGV

有时候我用下面的code,以避免堆栈溢出的编码竞赛参加的时候。 INT主要() { 静态const int的_STACK_SIZE = MAXN * 10; 静态INT _STACK [_STACK_SIZE * 2],_ESP; __asm​​__ __volatile__ ( “MOVL %% ESP,%0 \ N” “MOVL%1,%% ESP \ ..
发布时间:2015-11-28 12:19:01 服务器开发

64位应用程序与32位进程通信

我在使用32位的第三方库的32位应用程序。现在,我必须让我的应用程序的64位,以便它可以充分利用64位地址空间(大内存)。 因为我无法加载32位的库到64位应用程序的过程中,我想创建32位可执行程序封装在第三方库,并利用IPC(命名管道/插座)我的64位应用程序进行通信。 所以我的问题是将它们这样做的什么问题? 另外,如果我要在64位系统上安装我的应用程序,涉及到我的应用程序中的所有文件将被复制到 ..
发布时间:2015-11-28 12:16:26 其他开发

如何预约底部4GB虚拟机在基于x64的C ++应用程序

工作在32位Windows的C ++应用程序到64位移植。不幸的是,code使用频繁的铸造DWORD和指针值之间的两个方向。 其中一个想法是保留的虚拟进程空间中第一4GB尽早在过程的启动,使所有后续调用保留存储器将是从虚拟地址大于4GB的。这会导致访问冲突错误的任何不安全的指针转换为DWORD,然后回指针,并会帮助及时捕获错误。 当我看到一个非常简单的线C ++程序的内存映射,也有在底部装4G ..
发布时间:2015-11-28 12:15:55 C/C++开发

检测,如果所述处理器是在32位操作系统64位

通常情况下,x86-64架构提供兼容x86的。 32位Windows(或其它操作系统)可以在一个的x86-64处理器上运行。 (纠正我,如果我错了)。 我想知道是否有可能(在C ++)的32位Windows知道,如果底层的处理器是64位的。例如,如果Windows 7 32位的酷睿i5运行,我们应该能够知道,处理器是64位(尽管Windows 7的32位运行)。 您可能会质疑,即使处理器是64 ..
发布时间:2015-11-28 12:14:19 C/C++开发

绝对寻址运行时code置换的x86_64

我目前使用的一些code替代方案,32位,其中code被移动到另一个位置,读取变量和类的指针。由于x86_64的不支持绝对地址,我有麻烦了变量的正确地址为的code中的新位置。详细的问题是,由于裂口相对寻址指令指针地址,它是不是在编译时不同。 那么,有没有一种方法,使用绝对地址,在x86_64的或另一种方式来获得相关变量不是指令指针的地址? 是这样的: leaq变量(%% RAX),%% RB ..
发布时间:2015-11-28 12:14:07 其他开发

调用在x64约定

我在微软的调用约定为 64 平台被缩小到只有一个几个地方看到:来电清除栈( CDECL ),和参数传递的堆栈和寄存器(我不打算进入的具体细节在这里)的组合。我认为,如果这是操作系统的调用约定,那么很可能针对Windows的所有其他的编译器(如MinGW的-W64)遵循了这一点。 这是调用约定真还对其他主要平台( 64 Linux等)?还是Linux的仍然使用多个调用约定,甚至只是一个,但不同呢? ..

使用RIP相对的OSX的x64汇编处理

我试图做一个基本的的printf 例如,在x86-64的组装$ C $下OSX,这是我的第一个版本: 部分.DATA 味精DB'你好',0AH 段.text EXTERN _printf 全球_main _主要: 分RSP,8 MOV偏下,味精 MOV RAX,0 拨打_printf 添加RSP,8 RET 所以这个code为移动信息的绝对地址为 RDI ..
发布时间:2015-11-28 12:11:14 其他开发

32位指针与X86-64赛:为什么不呢?

在X86-64指令集增加了更多的寄存器和其他方面的改进,以帮助简化执行code。然而,在许多应用中增加的指针的大小是一种负担。在每一个指针额外的,未使用的字节阻塞缓存,甚至可能溢出内存。 GCC,例如,建立与 -m32 标记,而我认为这是什么原因。 这是可能加载一个32位的值,并把它作为一个指针。这并不需要额外的指令,只需加载/计算的32位,从结果地址加载。诀窍将无法移植,但是,作为平台有不同的 ..
发布时间:2015-11-28 12:09:27 其他开发

如何使用RIP相对寻址的64位汇编程序?

我如何使用RIP相对寻址在Linux汇编程序的AMD64 archtitecture? 我要寻找一个简单的例子(一个Hello World程序),采用AMD64 RIP相对adressing模式。 例如下面的64位汇编程序将与正常的(绝对地址): 的.text .GLOBAL _start _开始: MOV $ 0xd中,%RDX MOV $味精,RSI% ..
发布时间:2015-11-28 12:05:14 其他开发

如何打造64位的Python在OS X 10.6 - 只有64位,没有通用的废话

我只是想在自己的计算机建立这个 - 二进制从Python.org安装仍是32位,并安装扩展(MySQLdb的,例如)是推动我与试图找出正确的标志每个螺母和每一个扩展。 澄清:我没有更换系统的Python,我刚安装了Python.org二进制到其在/正常位置库/ ...,而不是/系统/库/.... 一切似乎来构建64位在默认情况下,默认的Python 2.6.1为64位(前,我与Python.o ..
发布时间:2015-11-28 12:00:08 Python

可以在x64应用程序中使用的x86组件 - 反之亦然?

我的应用程序构建为64位应用程序。移动到VS2010后,我得到了我的问题是:precautions做我需要有关混合x64和x86。可它在所有做什么?我想64的应用程序应该能够使用x86的dll文件没有问题。没有?那么其他的方式?可一个86应用程序中引用的64 DLL - 只要它正在运行在x64平台上?什么是我需要知道的陷阱? 解决方案 没有,一个64位进程只能加载64位DLL和32位进程只能加 ..
发布时间:2015-11-28 11:58:32 C#/.NET

移植32位C ++ code到64位 - 是值得吗?为什么?

我知道的x64体系结构的一些明显的收益(更高的可寻址内存地址等)...但是: 如果我的程序有没有真正的需要在本地64位模式下运行。应该反正我口呢? 是否有任何可预见的期限截至32位支持? 请问我的应用程序运行得更快/更好/原生64位code更安全? 解决方案 X86-64是有点特例 - (如SPARC)对许多架构,编制为64位模式下的应用程序不给它任何利益除非能盈利比4GB的内存使用较多。它 ..
发布时间:2015-11-28 11:56:26 C/C++开发

x86_64的ASM - 最大字节的指令?

什么是字节的最大数量的完整指令将需要64 ASM code? 喜欢的东西跳转到地址可能占用多达9个字节,我想: FF 00 00 00 00 11 12 3F 1F ,但我不知道这是个字节的最大数量的x64指令可以使用 解决方案 x86指令集(16,32或64位,所有变体/模式)是保证适合15个字节。任何超出,这将使“无效运算code”。你不能做到这一点,而无需使用多余的prefixes(如 ..
发布时间:2015-11-28 11:51:39 其他开发

使用32位"程序文件"在MSBuild的目录

在64位版本的Windows中,32位软件将安装在“C:\ Program Files文件(x86)的”。这意味着你不能使用$(PROGRAMFILES)来获得路径(32位)的软件。所以,我需要一个$(ProgramFiles32)克服这在我的MSBuild项目。我并不想改变这取决于它是运行在OS项目。 我有我将发布一个解决方案,但也许有一个更简单/更好的办法。 解决方案 在MSBuild的 ..
发布时间:2015-11-28 11:51:04 其他开发