linux汇编之命令行参数

STM32内存大小与地址的对应关系以及计算方法 1、概述 在计算机中要访问存储区,都是通过地址来进行访问的,包括所有的外设(比如串口、内存、硬盘等),都对应有一个访问地址,地址就相当于门牌号,有了门牌号,我们才知道操作的是哪一个区域、哪一个外设。 最被大家熟知的是计算机内存,计算机内存有4G、8G,16G等等,对于程序员而言,要在代码中操作这些内存,肯定得知道内存的地址,此外,还需要会计算地址与内存大小的计算方法与对应关系。STM32作为微 阅读详情
在需要传入命令行参数时,程序如何取得这些参数呢? 在高级语言程序中,例如C,可以通过main函数的提供参数得到,而在汇编语言中取得这些参数并不是这么简单。这些参数会被保存在栈中,压栈顺序和参数的声明顺序相反,先把指向环境变量的envp压如栈中,然后压如一个全0,区别开环境变量和命令行参数。然后是指向各个命令行参数的指针数组argv,最后才把参数个数argc压如。这样当程序执行时,栈中存放的数据如下:
数据:                地址:
envp[M] <------ (N+1)*4+(M+1)*4
.............
.............
envp[1] <------ (N+1)*4+8(%esp)
envp[0] <------ (N+1)*4+4(%esp)
argv[N] <------ (N+1)*4(%esp)
.............
.............
argv[1] <------  8(%esp)
argv[0] <------  4(%esp)
argc      <------  (%esp)


下面的一个简单的例子,显示所有的命令行参数。

.text
.globl _start

_start:
    popl 
%ecx
vnext:
    popl 
%ecx
    test 
%ecx, %ecx
    jz exit
    movl 
%ecx, %ebx
    xorl 
%edx, %edx

strlen:
    movb (
%ebx), %al
    inc    
%edx
    inc    
%ebx
    test    
%al, %al
    jnz    strlen
    movb    $
10, -1(%ebx)
    movl    $
4, %eax          # 系统调用号(sys_write) 
    movl    $
1, %ebx           # 文件描述符(stdout) 
    
int    $0x80
    jmp    vnext
exit:
    movl    $
1,%eax           # 系统调用号(sys_exit) 
    xorl     
%ebx, %ebx      # 退出代码
    
int        $0x80
                            
    ret

用gas汇编代码:
as -o args.o args.s
使用ld连接成可执行文件:
ld -s -o args args.o
执行程序:
[smallcat@smallcat code]$ ./args Linux Windows
.
/args
Linux
Windows
【电磁场与电磁波课程设计】基于HFSS的双频微带天线仿真及设计 第五代移动通信技术(5G)的商用已经近在眼前,作为移动通信中最为重要的功能组件,面向5G通信应用的手机天线与基站天线的技术研究与设计成为近年来的热点。随着移动通信中“跳频”“扩频”等通信技术发展,为了满足与多个终端的通信要求,实现多系统共用和收发共用等功能,这就要求天线在不同频段下工作。根据国家工信部的最新规定,5G移动通信的中频段被划定在3.3 GHz-3.5 GHz及4.8 GHz-5.0 GH,面向5G移动通信的天线应具有高增益、小型化、宽频段及高隔离度等技术特征,以满足5G通信的高传输速率、波束智能 阅读详情

相关推荐

从“跳变”到“连续”:深入理解霍尔传感器插值与PLL角度估算的优劣与选择

本文深入解析霍尔传感器角度估算技术,对比线性插值法和锁相环(PLL)跟踪法的优劣,为电机控制领域的工程师提供实用指南。通过STM32F407和CubeMX的实例,详细探讨两种方法的实现细节、性能对比及优化策略,帮助在不同应用场景下做出最优选择。

weixin_30855761的博客 559

Linux汇编指令

指令功能:mov指令用于寄存器与寄存器之间、内存与寄存器之间传送数据。

个人技术博客 1692

MaaS 商业模式全面分析报告:从技术赋能到商业变现的全链条探索

MaaS(模型即服务)商业模式正成为AI产业主流,2024年上半年中国市场规模达2.5亿元,预计2027年占比将提升至47%。该模式通过云服务提供预训练AI模型,大幅降低企业应用AI的技术门槛和成本。核心盈利方式包括按使用量计费、订阅制、定制化服务等,其中混合模式因灵活性成为趋势。MaaS产业链包含模型提供商、云平台、应用开发商和最终用户,重塑了AI产业格局。随着《数据法案》等监管加强,数据增值服务面临更严格合规要求。未来五年,中国MaaS市场增速预计超50%,用户规模将从2025年2.1亿增至2030年5

芯片行业20年 · 参与定义实现千万级量产出货 · AI芯片PM 2892

Linux gcc常用命令

目录1、简单编译1.1 预处理(Preprocessing)1.2 编译(Compilation)1.3 汇编(Assembly)1.4 连接(Linking)2、多个程序文件的编译3、检错4、库文件的连接4.1 编译成可执行文件4.2 链接4.3 强制链接时使用静态链接库5、参考资料 1、简单编译 编译示例如下: 一步到位编译指令: 事实上,编译过程分四个阶段,即预处理(Preprocessing)、编译(Compilation)、汇编(Assembly)和连接(Linking)。 1.1 预处理

m0_46275263的博客 1269

FDTD远场分析实战:从monitor数据到3D远场可视化的完整流程

本文详细介绍了FDTD远场分析的完整流程,从monitor采集的近场数据出发,通过近场-远场变换(NFFFT)生成3D远场可视化结果。文章重点解析了远场转换的物理原理、关键参数设置,并提供了构建稳健数据处理流水线及高级可视化(如3D辐射方向图)的实战脚本与技巧,适用于天线设计与光学器件分析。

weixin_29063035的博客 228

金蝶云星空核心数据表解析与高效关联查询指南

本文深入解析金蝶云星空核心数据表结构,提供高效关联查询的实战指南。文章详细介绍了基础资料、业务单据和财务模块的关键表及其关联逻辑,重点阐述了如何利用关联表(_LK表)进行跨单据溯源,并分享了编写高性能SQL的实用技巧与避坑建议,帮助开发者、实施顾问和数据分析师快速掌握数据查询方法,提升工作效率。

weixin_29254673的博客 526

汇编输出命令行参数

汇编 参数

fantasy_ARM9的博客 645

【生成C01/C10材料常数excel表】

计算橡胶件的邵尔硬度和C01/C10材料常数

weixin_46153372的博客 1934

(第一章)嵌入式linux之常用汇编指令

分为的数据传输或者的数据传输。数据传输常用的指令有三个:MOV、MRS和MSR注:MRS用于将特殊寄存器(如CPSR和SPSR)中的数据传递给通用寄存器,MSR 指令和MRS刚好相反,MSR指令用来将普通寄存器的数据传递给特殊寄存器,也就是写特殊寄存器,写特殊寄存器只能使用 MSR.我是这样记的:M开头就是传输指令,MOV最好记,MRS与MSR,R就是(READ)读取,强调读取操作,是读取特殊寄存器中的值。

qq_33001335的博客 1746

IPv6之001-IPv6是什么

技术本质:IPv6(Internet Protocol version 6)是互联网工程任务组(IETF)设计的网络层核心协议,用于替代IPv4核心使命:解决IPv4地址枯竭问题,重构互联网基础架构,支撑万物互联时代革命性特征fill:#333;color:#333;color:#333;fill:none;IPv6128位地址空间无状态自动配置原生IPsec加密协议头部精简。

老韩的Linux云计算架构师进阶之路 1393

相机标定(六)—— 张正友标定法

相机标定一、相机标定的目的1. 相机的成像过程2. 相机标定的目的3. 畸变与畸变矫正二、张正友标定法简介三、标定相机内外参1. 求解内参和外参的积2. 求解内参矩阵3. 求解外参矩阵四、标定相机的畸变参数五、L-M算法参数优化六、相机标定的步骤七、源代码 一、相机标定的目的 1. 相机的成像过程 2. 相机标定的目的 3. 畸变与畸变矫正 二、张正友标定法简介 三、标定相机内外参 1. 求解内参和外参的积 2. 求解内参矩阵 3. 求解外参矩阵 四、标定相机的畸变参数 五、L-M算法参数优化 六、相机

weixin_41480034的博客 1万+

Linux常用汇编指令

一、 数据传输指令 1. 通用数据传输指令 mov 传送字或字节 ( movb 传送字节 movw 传送字 movl 传送双字 movq 传送四字 movabsq 传送绝对的四字 ) movsx 先符号扩展,再传送 movzx 先零扩展,再传送 cltq x86-64把%eax符号扩展到%rax push 把字压入堆栈 pop 把字弹出堆栈 PUSHA 把AX,CX,DX,BX,SP,BP,SI,DI依次压入堆栈. POPA 把DI,SI,BP,SP,BX,DX,

qq_49005782的博客 3975

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

第15部分-Linux x86 64位汇编 命令行参数

第15部分-Linux x86 64位汇编 命令行参数 程序启动时,一些应用程序需要在命令行中指定输入参数。 不同的操作系统使用不同的方法把命令行参数传递给程序。 程序启动时候,Linux把如下4种类型的信息存放到程序堆栈中。 命令行参数的数目/shell提示符执行的程序的名称/命令行中包含的任何命令行参数/程序启动时所有当前Linux的环境变量。 而且这些元素的指针加载到堆栈中可以方便定位。 程序启动时候,堆栈的一般布局如下: 查看命令行参数...

badman250的专栏 567

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

第17部分-Linux x86 64位汇编 命令行参数

第17部分-Linux x86 64位汇编 命令行参数 使用命令行参数示例 在堆栈中命令行参数被存储为字符串值。需要进行转换工作,转换为数字。 可以使用C库函数的: atoi:把ASCII字符串转换为短整数值 atol:把ASCII字符串转换为长整数值 atof:把ASCII字符串转换为双精度浮点值 这些函数需要将字符串位置的指针必须放置堆栈中。 atoi函数结果返回到EAX寄存器中。Atol的结果存放在EDX:EAX寄存器中,需要64位。函数atof结果返回到fpu的st0寄存器中。

badman250的专栏 595

第14部分-Linux x86 64位汇编 命令行参数

第14部分-Linux x86 64位汇编 命令行参数 以上篇中编译的的funcmain为例。 使用gdb进行调试。 #gdb -q funcmain (gdb) b *_start+1 (gdb)r (gdb) print /x $rsp $3 = 0x7fffffffde90 (gdb) x /20x 0x7fffffffde90 0x7fffffffde90: 0x00000001 0x00000000 0xffffe268 0x00007fff 0x...

badman250的专栏 507

第16部分-Linux x86 64位汇编 命令行参数

第16部分-Linux x86 64位汇编 命令行参数 查看环境变量示例 .extern printf ;//调用外部的printf函数 .section .data output: .asciz "%s\n" resultstr: .ascii "Area result is %f.\n" .section .text .globl _start _start: mov %rsp, %rbp;//rsp移动到rbp add $24, %rbp;//指向第一个环境变量

badman250的专栏 484

linux平台学x86汇编(十五):使用命令行参数

【版权声明:尊重原创,转载请保留出处:blog.youkuaiyun.com/shallnet,文章仅供学习交流,请勿用于商业用途】         在高级语言中,程序在命令行上启动时常常带一个或多个参数,在汇编语言中也可以实现这一特性。在实现这一特性之前,我们先了解一下linux如何从命令行执行程序。         每一个应用程序开始执行时,系统都会为该程序分配一块内存区域,并且每个程序都

程序猿的挨踢人生 3238

8086汇编4位bcd码_汇编语言--Linux 汇编语言开发指南

目录简介Linux 语法格式Hello World!Linux 汇编工具系统调用命令行参数GCC 内联汇编小结一、简介作为最基本的编程语言之一,汇编语言虽然应用的范围不算很广,但重要性却毋庸置疑,因为它能够完成许多其他语言无法完成的功能。就拿 Linux 内核来讲,虽然绝大部分代码是用 C 语言编写的,但仍然不可避免的在某些地方使用了汇编代码,其中主要是在 Linux 的启动部分。由于这部分代码与...

weixin_39917437的博客 426

_汇编语言--Linux 汇编语言开发指南

目录简介Linux 语法格式Hello World!Linux 汇编工具系统调用命令行参数GCC 内联汇编小结一、简介作为最基本的编程语言之一,汇编语言虽然应用的范围不算很广,但重要性却毋庸置疑,因为它能够完成许多其他语言无法完成的功能。就拿 Linux 内核来讲,虽然绝大部分代码是用 C 语言编写的,但仍然不可避免的在某些地方使用了汇编代码,其中主要是在 Linux 的启动部分。由于这部分代码与...

weixin_39581995的博客 209

g intel linux 汇编_Linux汇编语言开发指南

http://blog.chinaunix.net/space.php?uid=25299072&do=blog&id=2943093一、简介作为最基本的编程语言之一,汇编语言虽然应用的范围不算很广,但重要性却勿庸置疑,因为它能够完成许多其它语言所无法完成的功能。就拿 Linux内核来讲,虽然绝大部分代码是用 C 语言编写的,但仍然不可避免地在某些关键地方使用了汇编代码,其中主要是...

weixin_39860260的博客 283

g intel linux 汇编_Linux 汇编语言开发指南 Intel 格式--AT&T 格式

一、简介简介作为最基本的编程语言之一,汇编语言虽然应用的范围不算很广,但重要性却勿庸置疑,因为它能够完成许多其它语言所无法完成的功能。就拿 Linux 内核来讲,虽然绝大部分代码是用 C 语言编写的,但仍然不可避免地在某些关键地方使用了汇编代码,其中主要是在 Linux 的启动部分。由于这部分代码与硬件的关系非常密切,即使是 C 语言也会有些力不从心,而汇编语言则能够很好扬长避短,最大限度地发挥...

weixin_39760389的博客 244

NASM x86汇编入门指南

NASM x86汇编入门指南原文链接:http://docs.cs.up.ac.za/programming/asm/derick_tut/#helloworld 内容1.       介绍2.       为什么写这篇文章3.       NASM(The Netwide Assembler)汇编编译工具3.1   为什么使用NASM?3.2   如何安装NASM

1万+

Linux AT&T 汇编语言开发指南(转载)

Linux 汇编语言开发指南转载自:IBM developerWorks 中国网站肖文鹏(xiaowp@263.net)北京理工大学计算机系硕士研究生2003 年 7 月汇编语言的优点是速度快,可以直接对硬件进行操作,这对诸如图形处理等关键应用是非常重要的。Linux 是一个用 C 语言开发的操作系统,这使得很多程序员开始忘记在 Linux 中还可以直接使用汇编这一底层语言来优化程序的性能。本文为

Rabbit's nest 915

【汇编】Linux 下汇编程序开发

一,简介        Linux 下用汇编语言编写的代码具有两种不同的形式。        1)完全的汇编代码             指的是整个程序全部用汇编语言编写。尽管是完全的汇编代码,Linux 平台下的汇编工具也吸收了 C 语言的长处,使得程序员可以使用 #include、#ifdef 等预处理指令,并能够通过宏定义来简化代码。        2)内嵌的汇编代码

小田的专栏 1744

Linux 汇编工具

三、Linux 汇编工具 Linux平台下的汇编工具虽然种类很多,但同 DOS/Windows一样,最基本的仍然是汇编器、连接器和调试器。 1.汇编器 汇编器(assembler)的作用是将用汇编语言编写的源程序转换成二进制形式的目标代码。Linux平台的标准汇编器是 GAS,它是 GCC所依赖的后台汇编工具,通常包含在 binutils软件包中。GAS 使用标准的 AT&amp...

iteye_7332的博客 807

Linux下的汇编开发

(注:这个学期开了汇编的课程,找一篇资料来学)汇编语言的优点是速度快,可以直接对硬件进行操作,这对诸如图形处理等关键应用是非常重要的。Linux 是一个用 C 语言开发的操作系统,这使得很多程序员开始忘记在 Linux 中还可以直接使用汇编这一底层语言来优化程序的性能。本文为那些在Linux 平台上编写汇编代码的程序员提供指南,介绍 Linux 汇编语言的语法格式和开发工具,并辅以具体的例子讲述如

1699

(转)gas汇编小手册 学习Linux内核代码的必备

gas汇编小手册 学习Linux内核代码的必备一、简介 作为最基本的编程语言之一,汇编语言虽然应用的范围不算很广,但重要性却勿庸置疑,因为它能够完成许多其它语言所无法完成的功能。就拿 Linux 内核来讲,虽然绝大部分代码是用 C 语言编写的,但仍然不可避免地在某些关键地方使用了汇编代码,其中主要是在 Linux 的启动部分。由于这部分代码与硬件的关系非常密切,即使是 C 语言

白虎的地盘 3744
上一篇: 内存字节对齐
下一篇: 一个C程序的内存布局(memory layout)
mindview
博客等级 码龄19年 7粉丝 10原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值