首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将内联ASM转换为内部ASM

将内联ASM转换为内部ASM
EN

Stack Overflow用户
提问于 2011-10-03 18:38:30
回答 2查看 1.6K关注 0票数 1

为了测试性能,我接到了一项任务,将一小部分asm转换为内部asm。我从来没有为这两种语言开发过任何代码,但我理解asm和c,并且阅读了一些内在语法。但是我找不到关于内在是如何处理访问寄存器的信息。我找到了两个函数:

getReg()和setReg()

getReg()附带了不同寄存器表及其id/编号的表:-General整数寄存器、-Application寄存器、-Control寄存器、-Indirect寄存器,但似乎没有一个与诸如rax、rdi等asm寄存器相对应。

如何在内部寻址寄存器,如rcx、rdi等?或者换句话说,我如何将其转换为:

MOV%0,%rcx

内在等价物?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-10-03 18:55:19

你忽略了内部函数的要点--当你使用内部函数时,你不需要担心寄存器的分配(除了在某些情况下访问特殊寄存器的情况)。一般的想法是让编译器为您处理所有这类低级事务。要将原始asm移植到内部,您需要首先对asm代码进行反向工程,以便了解它的用途,然后使用内部重新实现等效代码。如果你发布一些实际的代码,你可能会得到更具体的建议。

票数 5
EN

Stack Overflow用户

发布于 2011-10-03 19:08:30

看看你是否可以使用其中的任何一个:

GCC:X86 Built-in Functions

MSVC++:Alphabetical Listing of Intrinsic Functions

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7633899

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档