我正在为一个为(我们)模组提供API的游戏编写扩展程序。这个API提供了各种各样的东西,但它有一个限制。API仅适用于“引擎”,这意味着基于引擎发布的所有修改(mod)不提供/具有任何类型的(特定于模块的)API。我创建了一个“签名扫描器”(注意:我的插件作为共享库加载,使用-share和-fPIC编译)它可以找到感兴趣的功能(因为我在linux上很容易)。所以来解释一下,我举一个具体的例子:我找到了一个感兴趣的函数的地址,它的函数头很简单int*InstallRules(void);.它需要一个空(void)并返回一个整数指针(指向我感兴趣的对象)。现在,我想要做的是为我自己的函数创
我现在正在Linux下使用Assembly进行开发,但我喜欢在具有语法高亮功能的编辑器上进行开发。然后我想知道什么是最好的Assembly(有语法高亮)。 最佳答案 Vim是我的首选编辑器。它支持汇编代码的语法高亮显示,如果您不喜欢默认设置,您可以随时更改它。另见thisSOquestion有关Vim汇编语法高亮显示的更多信息。 关于linux-汇编文本编辑器,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.
这个问题在这里已经有了答案:Howtoinvokeasystemcallviasyscallorsysenterininlineassembly?(2个答案)关闭3年前。我正在尝试使用内联汇编...我读了这个页面http://www.codeproject.com/KB/cpp/edujini_inline_asm.aspx但我无法理解传递给我的函数的参数。我正在写一个C写的例子..这是我的函数头:write2(char*str,intlen){}这是我的汇编代码:globalwrite2write2:pushebpmovebp,espmoveax,4;sys_writemovebx,
许多linux/x86-64系统调用接受指向结构的指针作为参数。例如stat(2)的第二个参数是structstat*...structstat{dev_tst_dev;/*IDofdevicecontainingfile*/ino_tst_ino;/*inodenumber*/mode_tst_mode;/*protection*/nlink_tst_nlink;/*numberofhardlinks*/uid_tst_uid;/*userIDofowner*/gid_tst_gid;/*groupIDofowner*/dev_tst_rdev;/*deviceID(ifspecia
我正在转换一个巨大的Windowsdll以在Windows和Linux上运行。该dll有很多用于视频操作的程序集(和SS2指令)。代码现在可以使用Windows上的英特尔ComposerXE-2011和Linux上的英特尔ComposerXE-2013SP1中包含的英特尔编译器在Windows和Linux上正常编译。但是,当尝试调用函数指针时,在Linux中执行会崩溃。我跟踪了gdb中的代码,实际上函数指针没有指向所需的函数(而在Windows中确实如此)。几乎其他一切都正常。这是代码序列:...movrdi,thisleardx,[rdi].m_sSomeStruct...leara
我从Linux下的汇编程序开始。我已将以下代码保存为testasm.c并编译它:gcctestasm.c-ostasm编译器回复:“'asm'中不可能的约束”。#includeintmain(void){intfoo=10,bar=15;__asm____volatile__("addl%%ebx,%%eax":"=eax"(foo):"eax"(foo),"ebx"(bar):"eax");printf("foo=%d",foo);return0;}我该如何解决这个问题?(我从here中复制了示例。)DebianLenny,内核2.6.26-2-amd64gcc版本4.3.2(Deb
我在链接2个目标文件时遇到问题,其中一个是从汇编语言源文件生成的,另一个是从C源文件生成的。C源代码://main2.cexternintstrlength(char*);intmain(){char*test="hello";intnum=strlength(test);returnnum;}汇编源代码:#strlength.s.include"Linux32.s".section.text.globlstrlength.typestrlength,@functionstrlength:pushl%ebpmovl%esp,%ebpmovl$0,%ecxmovl8(%ebp),%edx
关闭。这个问题不符合StackOverflowguidelines.它目前不接受答案。我们不允许提问寻求书籍、工具、软件库等的推荐。您可以编辑问题,以便用事实和引用来回答它。关闭2年前。Improvethisquestion有谁知道在哪里可以找到Assembly中Linux系统调用的汇总表或备忘单?我正在通过int0x80指令调用Linux系统调用,我需要一个快速引用来确定哪个寄存器包含哪个值不时。
嘿嘿我编写了这个非常基本的main函数来尝试反汇编,并查看并希望了解较低级别发生的事情:intmain(){return6;}使用gdb来disasmain会产生这个:0x08048374:lea0x4(%esp),%ecx0x08048378:and$0xfffffff0,%esp0x0804837b:pushl-0x4(%ecx)0x0804837e:push%ebp0x0804837f:mov%esp,%ebp0x08048381:push%ecx0x08048382:mov$0x6,%eax0x08048387:pop%ecx0x08048388:pop%ebp0x080483
这个问题在这里已经有了答案:Assembling32-bitbinariesona64-bitsystem(GNUtoolchain)(2个答案)关闭6年前。我有一个用32位汇编语言编写的程序...现在我无法在64位操作系统上编译它。在我们学校,它们是特定的,程序必须用32位版本编写。这是我的程序:bits32extern_printfglobal_startsection.datamessagedb"Helloworld!!",10,0section.text_start:pushadpushdwordmessagecall_printfaddesp,4popadret有什么想法吗?