我正在学习AT&Tx86汇编语言。我正在尝试编写一个接受整数n的汇编程序,然后返回结果(n/2+n/3+n/4)。这是我所做的:.text.global_start_start:pushl$24callprofitmovl%eax,%ebxmovl$1,%eaxint$0x80profit:popl%ebxpopl%eaxmov$0,%esimovl$4,%ebpdiv%ebpaddl%eax,%esimovl%ecx,%eaxmovl$3,%ebpdiv%ebpaddl%eax,%esimovl%ecx,%eaxmovl$2,%ebpdiv%ebpaddl%eax,%esimovl%
我正在尝试在Intel架构的Linux汇编中编译一个小程序。我想使用C库的一些函数,但它没有链接。这是我的汇编程序:.text.globlmainmain:pushl$512callmallocaddl$4,%espmov$1,%eaxmov$0,%ebxint$0x80我正在编译as--32-ooutput.ooutput.asm在这里,一切顺利。然后当我链接到ld-static-melf_i386-oa.outoutput.o-lc,我遇到了这些错误:(.text+0x1b8):undefinedreferenceto_Unwind_Resume'/usr/lib32/libc.a
关闭。这个问题不符合StackOverflowguidelines.它目前不接受答案。我们不允许提问寻求书籍、工具、软件库等的推荐。您可以编辑问题,以便用事实和引用来回答。关闭3年前。Improvethisquestion我正在寻找的是一个将在Linux上运行的IDE,它支持C++和x86汇编语法突出显示。我已经尝试过Code::Blocks,但它不允许我按需要运行该程序,因此效果不佳。我的需求:能够通过在某个目录下发出“makeall”来编译程序能够通过发出自定义命令而不是运行某个可执行文件来运行程序图形化(不是vim/emacs/等),将在GNOME/Fedora14中运行什么会很
我觉得我的问题可能看起来有点奇怪,但就是这样;我正在尝试用C++动态创建一个程序(主要是为了它的乐趣,但也出于编程原因)并且它并不像听起来那么难。为此,您必须像这样在运行时使用程序集:byte*buffer=newbyte[5];*buffer='0xE9';//Codefor'jmp'*(uint*)(buffer+1)='addressdestination';//Addresstojumpto这比看起来容易得多,因为我只针对一个平台和编译器;GCC与Linux32位(并且只有一个调用约定,cdecl)。所以我试图创建一个动态汇编函数来重定向来自触发器的调用,这样我就可以使用类方法
我有两个宏,一个是用汇编写的,另一个是用C写的。第二个宏使用了第一个宏。但是,我还想用volatile在汇编中编写第二个宏,这样我就可以控制它在代码中的位置。请注意,tid是一个运行时值,而不是像n这样的常量。用汇编编写它的好方法是什么?此外,是否可以控制C代码的放置,例如使用volatile的汇编?#defineSAVE_SP(n)__asm____volatile__("movq%rsp,msp"#n";"\"movqts"#n",%rsp;"\)#defineSAVE_STACK_POINTER(tid)\switch(tid)\{\case0:\SAVE_SP(0);\brea
我正在尝试运行的代码如下。我使用nasmutil将其转换为目标文件。当我尝试执行时,它说“无法执行二进制文件”。我运行命令:nasm-felf-ohelloworld.ohelloworld.asmsegment.datamsgdb"Hello,world!",10lenequ$-msgsegment.textglobal_start_start:moveax,4movebx,1movecx,msgmovedx,lenint80hmoveax,1movebx,0int80h这是我在汇编中的第一个程序,除了编译一些我没有使用ubuntu基本的C程序。我需要一些帮助谢谢大家。
我正在为一个为(我们)模组提供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