Minix下的汇编

2023-05-16

Minix下的汇编
大多数的编译器,如Turbo C/C++,Borland C/C++,M$ C/C++,GCC,VC+,编译过程都是"高级语言"->"asm"->"obj" .(当然TurboPascal是个例外,它能跳过生成asm文件这一段而直接生成目标代码).

Minix下的CC也不例外.

一般来说,minix启动时执行的第一段代码就位于mpx386.s中,但是#$%#$!@,怎么看不懂啊,虽说和它里面的几个mov,jmp都是老朋友了,可一看到里面那古里古怪的伪指令,我就找不着北了.上网查了半天,虽然没查到什么,但感觉English又进步了不少:P.

没办法,看来只有LIY(Learn It by Yourself,自学)了.

这里所说的"自学",不是平常说的那种抱着一本什么什么书看上半天的那种自学,那叫"自己学习",这里所说的自学,是"自己动手学".可是现在的问题是从哪里入手呢?我的第一反应是"Hello world!",不晓得你是什么反应:P.

第一,二段提到了,CC的编译过程是:src->asm->obj.对,就从这里入手,用CC将.c文件转换成.s文件.

先进入Minix,用man查看一下cc的使用说明,因为是查找和汇编有关的选项,所以我就用命令:# man cc | grep assem.于是屏幕上就显示出了带assem的几行,当然只有这一行是最有用的:"-S   Transform the input files to assembly files with suffix .s.".

那么现在就试试看,先来个Hello.c,代码很简单:int main(){printf("Hello world!");}.再将它转换成.s文件:"cc -S hello.c".OK,现在一个标准的.s的框架就出来了:

1]  .sect .text; .sect .rom; .sect .data; .sect .bss
2]  .extern _main
3]  .sect .text
4]  _main:
5]  push ebp
6]  mov ebp,esp
7]  push I_1
8]  call _printf
9]  pop ecx
10] leave
11] ret
12] .sect .rom
13] I_1:
14] .data4 1819043144
15] .data4 1870078063
16] .data4 560229490
17] .data4 0
18] .sect .text

好了,现在来分析一下这个.s文件的结构:

第1]行:sect应该是section的意思,那么.sect .text;就是说明一个代码段,.sect .data 是说明一个数据段(以初始化),.sect .bss 是说明一个数据段(末初始化),还有一个.sect .rom 搞不清,没关系,接着往下看:

第2]行:容易理解,说明了一个名为_main的标签.

第3]行:OK,代码要开始了.

第4]至11]行:不在本文的学习范围之内,跳过.

第12]至17]行:似乎这几行就是"Hello world!"的值.哦,明白了,.rom表示常量的意思.

行了,到了这里,一个简单的.s文件的框架就分析完了,如果还不满足的话,可以自己动手做做看:"do not try to memorize, learn by usage.".不过,在分析的过程中,千万不要在.c里面放个"#include <stdio.h>",至于是为什么,我在这里就不说了,自己试试看吧!

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Minix下的汇编 的相关文章

  • 房卡麻将分析系列之"发牌器"算法设计

    房卡麻将分析系列之 34 发牌器 34 算法设计 大家好 xff0c 经过一段时间的努力 xff0c 在填平了大部分源码框架中的坑后 xff0c 我们的 大赢家 红中麻将总算完成了1 0版本 xff0c 虽然仍然有诸多问题 xff0c 但总
  • 房卡麻将分析系列之"架构选型"

    房卡 麻将研发技巧 xff0c 尽在 红孩儿的游戏开发之路 xff0c 欢迎关注公众号 xff01 房卡麻将分析系列之 34 架构选型 34 这段时间 xff0c 团队的棋牌订制咨询量激增 xff0c 每天都有人问如何进行订制合作 xff0
  • 房卡麻将分析系列之"断线重连"

    房卡 麻将研发技巧 xff0c 尽在 红孩儿的游戏开发之路 xff0c 欢迎关注公众号 xff01 房卡麻将分析系列之 34 断线重连 34 大家好 xff0c 我是红孩儿 xff0c 房卡 麻将分析系列继续进行中 在进行游戏的过程中 xf
  • 房卡麻将分析系列之"千里传音"

    房卡 麻将研发技巧 xff0c 尽在 红孩儿的游戏开发之路 xff0c 欢迎关注公众号 xff01 房卡麻将分析系列之 34 千里传音 34 在房卡棋牌游戏中 xff0c 因为要频繁的看牌 xff0c 出牌 为了实时沟通打字聊天往往比较麻烦
  • 房卡棋牌分析系列之"微信登录"

    房卡 麻将研发技巧 xff0c 尽在 红孩儿的游戏开发之路 xff0c 欢迎关注公众号 xff01 房卡棋牌分析系列之 34 微信登录 34 房卡棋牌之所以火热 xff0c 很大程度上取决于当下中国智能机的普及和微信作为基础通讯社交工具的广
  • 程序员三十岁之后要考虑什么?

    程序员三十岁之后要考虑什么 xff1f 周六受邀参加了触控科技CocoaChina开发者社区举办的 34 移动游戏人才培养和创业机会 的沙龙 其间被问到一个问题 xff1a 程序员三十岁之后该怎么办 xff1f 三十岁后该怎么办 xff1f
  • 房卡麻将分析之"一键入局"

    地方棋牌 xff0c VR AR技术 xff0c 请关注公众号 xff1a 34 红孩儿的游戏开发之路 房卡麻将分析之 34 一键入局 34 房卡麻将通过微信邀请好友加入房间进行游戏 xff0c 大大方便了玩家进行麻将游戏 这也凸显了微信对
  • 房卡麻将分析之"防作弊处理"

    房卡麻将分析之 34 防作弊处理 34 棋牌游戏最重要的一个特点就是人与人对局 xff0c 因为玩家各自的不可见 xff0c 就存在着一些作弊的可能性和漏洞 对于手机房卡麻将游戏 xff0c 大家最讨厌的问题就是作弊 如何防止玩家作弊 xf
  • 房卡麻将分析之“缺人玩法”

    一般玩麻将都是四个人 xff0c 遇到 三缺一 怎么办 xff1f 大多数情况下 xff0c 玩家只好等待或叫人 xff0c 这无疑增加了玩家的等待时间 xff0c 同时也减缓了房卡的消耗速度 其实四个人并不是玩麻将的硬性条件 xff0c
  • 房卡麻将分析之“代开房间”

    什么是代开房间 代开房间 xff0c 就是可以创建一个新的房间 xff0c 让其它玩家加入 为什么要做代开房间 xff08 1 xff09 可以帮助没有房卡的朋友开房 xff0c 提升未买卡玩家玩游戏的积级性 xff08 2 xff09 代
  • 信号量sem_wait()的使用

    闲来无事 xff0c 我给大家讲下UNIX Linux下信号量函数的使用 首先你得知道什么叫信号量 xff0c 什么时候要用信号量 这个嘛 xff0c 主要就是用来保护共享资源的 xff0c 也就是说如果你想限制某个 xff08 些 xff
  • 房卡麻将分析之“俱乐部功能”

    什么是俱乐部 群主 xff08 代理 xff09 创建俱乐部后 xff0c 可以邀请自已的群成员成为自已的俱乐部会员 xff0c 方便管理 俱乐部玩法由创始人设置 xff0c 只有俱乐部成员才能加入 xff0c 并且俱乐部房间全部消耗创始人

随机推荐

  • 红孩儿网狐Cocos经典棋牌开发教程-卞安-专题视频课程

    红孩儿网狐Cocos经典棋牌开发教程 4750人已学习 课程介绍 由知名Cocos技术讲师红孩儿讲解的基于网狐源码进行棋牌开发的系列教程 课程收益 1 快速理解掌握网狐棋牌的源码框架 2 能够学会使用网狐棋牌快速换皮产品 3 能够在网狐棋牌
  • STM32F407VET6 普通 IO 口模拟串口发送数据

    1 只实现了 xff0c 使用普通 IO 口模拟串口的发送 xff0c 没有实现接收 2 由于是模拟发送的是 TTL 电平 xff0c 所以在使用串口助手验证发送数据的准确性时 xff0c 应该使用 USB 转 TTL xff0c 而不能使
  • 虹科知识分享|关于阻塞函数和非阻塞函数

    在CAN和LIN相关的开发库里 xff0c 不可避免的会出现 收 和 发 的函数 如何快速有效的处理数据 xff0c 是开发中重要的事项 但实际上单路CAN由于波特率的限制 xff0c 数据量并不会很大 xff1a 以常用的500k为例 x
  • 车用技术总线 | 从应用角度了解下LIN总线

    注意 xff1a 本文约4850字 xff0c 完整阅读时间约13分钟 主要内容 LIN总线概述 LIN总线的应用 示例 xff1a LIN总线和CAN总线的窗户控制 LIN总线的信号报文 记录LIN总线数据 LIN总线数据记录应用案例 本
  • 工业通讯 | CAN基础内容详解(二)——物理层

    往期回顾 工业通讯 CAN基础内容详解 xff08 一 xff09 物理层主要完成设备间的信号传送 xff0c 把各种信号转换成物理信号 xff0c 并将这些信号传输到其他目标设备 在这一层中 xff0c CAN bus对信号电平 通信时使
  • 04ROS中的头文件与源文件

    ROS中的头文件与源文件 本节主要介绍ROS的C 43 43 实现中 xff0c 如何使用头文件与源文件的方式封装代码 xff0c 具体内容如下 设置头文件 xff0c 可执行文件作为源文件 xff1b 分别设置头文件 xff0c 源文件与
  • TX2系统安装

    手头新拿到块TX2 xff0c 从零开始搞 xff0c 特此记录以备后续查看 xff0d 2017 07 16 乐 参考官方网址 JetPack下载网址 准备刷机环境 下载JetPack L4T 3 1 linux x64 run pc环境
  • 单片机是嵌入式的子类

    1系统组成结构上的区别 xff08 1 xff09 单片机基本结构 单片机由运算器 控制器 存储器 输入输出设备构成 xff08 2 xff09 嵌入式系统成部分 嵌入式系统一般由嵌入式微处理器 外围硬件设备 嵌入式操作系统 特定的应用程序
  • STM32串口协议概念及结构体初始化详解+串口点灯+串口收发程序

    文章目录 一 串口通信协议简介1 RS232标准2 USB转串口3 原生的串口到串口 二 初始化结构体解1 USART初始化结构体2 同步时钟初始化结构体3 编程时需要用到的固件库函数 三 串口点灯代码实现1 USART C文件2 USAR
  • 无人机光流定位系列——(一)原理剖析

    这次参加深圳的高交会 xff0c 在qualcomm展区看到了多款mini无人机 xff0c 大家稍微细心一点就可以发现这些无人机都使用了一种叫光流定位的技术 xff0c 很多人可能都还不明白光流定位是个什么东西 xff0c 是如何进行定位
  • 现代控制理论2——状态空间分析法

    注 xff1a 本文是在MOOC平台上学习西北工业大学 现代控制理论基础 xff08 郭建国 赵斌 郭宗易 xff09 的课程进行随笔记录与整理 一 状态空间描述的相关概念 1 系统模型包括 xff1a 内部结构 xff0c 以及内部结构反
  • 输出调节——内模原理(1)

    浏览了百度和部分文献 xff08 主要为 xff1a 调节问题系统综述 xff0c 线性系统的内模原理 xff09 xff0c 在此尝试进行一些归纳 一 问题描述 输出调节问题 xff1a output regulation problem
  • RGB-D相机建图——2、openvins安装、测试与连接自己设备

    基础内容贴推荐 xff1a https zhuanlan zhihu com p 93814423 https blog csdn net weixin 39752599 article details 105906652 https zh
  • RGB-D相机建图——3、使用kalibr进行相机标定

    Kalibr 视觉惯性校准工具箱 官方网站 xff1a https github com ethz asl kalibr Kalibr是一个工具箱 xff0c 可以解决以下校准问题 xff1a 多摄像机校准 xff1a 具有非全局共享重叠视
  • 02.构建项目流程梳理及总结

    02 构建项目流程梳理及总结
  • Nuttx学习入门

    Nuttx学习 NuttX 是一个实时操作系统 RTOS xff0c 强调标准合规性和占用空间小 可从 8 位扩展到 64 位微控制器环境 xff0c NuttX 中的主要管理标准是 POSIX 和 ANSI 标准 NuttX 的主要环境依
  • 软件测试之如何介绍自己的项目

    测试人员在找工作的过程中 xff0c 通常有一个问题是很难绕开的 就是要如何向别人介绍自己之前做过的项目 要解决这个问题 xff0c 大致可以分为如下几个步骤 xff1a 1 对项目进行基本介绍 2 说明自己负责测试的模块 3 针对部分模块
  • FreeRTOS多任务管理

    文章目录 1 任务1 1 任务简介1 2 任务调度1 3 任务的状态 就绪态 运行态 阻塞态 挂起态 1 4 空闲任务 2 动态创建两个任务2 1 定义动态内存空间的堆2 2 定义任务函数2 3 定义 任务控制块 指针2 4 动态创建任务
  • 计算机类期刊投稿心得 [ 添加中...现35种 ]

    1 杂志名称 计算机应用研究 杂志文章包含专业 建模 xff0c 仿真 xff0c 网络 xff0c 人工智能 xff0c 比较杂 投稿联系方式 http www arocmag com 注册在线投稿审稿 投稿费用 250元 页 杂志级别
  • Minix下的汇编

    Minix下的汇编 大多数的编译器 xff0c 如Turbo C C 43 43 xff0c Borland C C 43 43 xff0c M C C 43 43 xff0c GCC xff0c VC 43 xff0c 编译过程都是 xf