此描述适用于Linux32位:当Linux程序开始时,所有指向命令行参数的指针都存储在堆栈中。参数个数存放在0(%ebp),程序名存放在4(%ebp),参数从8(%ebp)开始存放。我需要64位的相同信息。编辑:我有显示如何使用argc、argv[0]和argv[1]的工作代码示例:http://cubbi.com/fibonacci/asm.html.globl_start_start:popq%rcx#thisisargc,mustbe2foroneargumentcmpq$2,%rcxjneusage_exitaddq$8,%rsp#skipargv[0]popq%rsi#get
我做了两个程序输出两个字符串,一个用汇编,一个用C。这是汇编程序:.section.datastring1:.ascii"Hola\0"string2:.ascii"Adios\0".section.text.globl_start_start:pushl$string1callputsaddl$4,%esppushl$string2callputsaddl$4,%espmovl$1,%eaxmovl$0,%ebxint$0x80我用构建程序astest.s-otest.old-dynamic-linker/lib/ld-linux.so.2-otesttest.o-lc输出符合预期H
我做了两个程序输出两个字符串,一个用汇编,一个用C。这是汇编程序:.section.datastring1:.ascii"Hola\0"string2:.ascii"Adios\0".section.text.globl_start_start:pushl$string1callputsaddl$4,%esppushl$string2callputsaddl$4,%espmovl$1,%eaxmovl$0,%ebxint$0x80我用构建程序astest.s-otest.old-dynamic-linker/lib/ld-linux.so.2-otesttest.o-lc输出符合预期H
我目前正在学习汇编语言。我正在使用Gas在LinuxMint(32位)。使用本书:ProgrammingfromtheGroundUp.我使用的机器有一个AMDTurion64bit处理器,但我仅限于2GB的RAM。我正在考虑将我的Linux安装升级到64位版本的LinuxMint,但我担心因为本书针对的是32位x86架构,所以代码示例无法运行。所以两个问题:代码示例是否可能存在任何问题?这里有没有人注意到使用64位Linux比使用32位Linux总体上有什么好处(我在StackOverflow上看到过一些与此有关的帖子,但它们主要与WindowsVista和WindowsXP相关。)
我目前正在学习汇编语言。我正在使用Gas在LinuxMint(32位)。使用本书:ProgrammingfromtheGroundUp.我使用的机器有一个AMDTurion64bit处理器,但我仅限于2GB的RAM。我正在考虑将我的Linux安装升级到64位版本的LinuxMint,但我担心因为本书针对的是32位x86架构,所以代码示例无法运行。所以两个问题:代码示例是否可能存在任何问题?这里有没有人注意到使用64位Linux比使用32位Linux总体上有什么好处(我在StackOverflow上看到过一些与此有关的帖子,但它们主要与WindowsVista和WindowsXP相关。)
我最近开始寻求更深入地了解我的计算机的工作原理。我的问题是关于push和pushq之间的区别。我知道push向堆栈写入一个值,我的假设是pushq做类似的事情。q在那里的事实让我认为应该存在细微的差异,但我似乎无法理解差异。我声明在使用gdb和命令“layoutasm”调试文件/lib/udev/iphone-set-info时思考这个问题。有问题的代码是:pushq$0x0push%r9我知道$0x0是NULL的十六进制,而%r9是通用寄存器之一。这是否仅仅意味着将Nullus写入堆栈并在其上方写入寄存器%r9? 最佳答案 我不确
我最近开始寻求更深入地了解我的计算机的工作原理。我的问题是关于push和pushq之间的区别。我知道push向堆栈写入一个值,我的假设是pushq做类似的事情。q在那里的事实让我认为应该存在细微的差异,但我似乎无法理解差异。我声明在使用gdb和命令“layoutasm”调试文件/lib/udev/iphone-set-info时思考这个问题。有问题的代码是:pushq$0x0push%r9我知道$0x0是NULL的十六进制,而%r9是通用寄存器之一。这是否仅仅意味着将Nullus写入堆栈并在其上方写入寄存器%r9? 最佳答案 我不确
我正在尝试学习汇编——Linux环境中的x86。我能找到的最有用的教程是WritingAUsefulProgramWithNASM.我给自己设定的任务很简单:读取文件并将其写入标准输出。这是我的:section.text;declaringour.textsegmentglobal_start;tellingwhereprogramexecutionshouldstart_start:;thisiswherecodestartsgettingexec'ed;getthefilenameinebxpopebx;argcpopebx;argv[0]popebx;thefirstrealar
我正在尝试学习汇编——Linux环境中的x86。我能找到的最有用的教程是WritingAUsefulProgramWithNASM.我给自己设定的任务很简单:读取文件并将其写入标准输出。这是我的:section.text;declaringour.textsegmentglobal_start;tellingwhereprogramexecutionshouldstart_start:;thisiswherecodestartsgettingexec'ed;getthefilenameinebxpopebx;argcpopebx;argv[0]popebx;thefirstrealar
按照目前的情况,这个问题不适合我们的问答形式。我们希望答案得到事实、引用或专业知识的支持,但这个问题可能会引发辩论、争论、投票或扩展讨论。如果您觉得这个问题可以改进并可能重新打开,visitthehelpcenter指导。关闭11年前。哪个工具最适合反汇编C++可执行文件?我正在寻找类似OllyDbg但适用于Linux的东西。编辑:抱歉,忘了告诉我我也希望能够调试,而不仅仅是查看asm代码。EDIT2:我所说的“最佳”是指-“最适合Windows的是OllyDbg-可以查看asm代码并可以调试,它对用户友好且非常强大。哪个最适合Linux”。