注:本文由破船译自:raywenderlich。感谢唐巧抽出时间对本文进行double-check。     
  我们写的Objective-C代码,最终会被转换为机器代码 —— 由ARM处理器能识别的1和0组成。实际上,在机器代码之间,还有一门人类可以阅读的语言 —— 汇编语言。 
 
    
 
  了解汇编,可以深入到你的代码里面进行调试和优化的探索,并有助于你对O            
                
         
            
            
            
            刚开始学汇编,看着视频用MASM 编译 感觉挺麻烦的,就设计了这样的一个小程序  只要把汇编源程序 ASM文件 推拽到这个程序的图标就能完成编译、链接、生成exe 可执行文件支持DOS 命令行调用 : 本程序名 需要编译的文件名分为两个版本 【单文件版】 和 【集成 MASM 6.15 版】【单文件版】:需要自己下载 MASM用法:  首先需要将MASM.E            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2024-05-24 16:06:45
                            
                                111阅读
                            
                                                                             
                 
                
                                
                     
                                    
                             
         
            
            
            
            在WIN10环境下,运行汇编程序不是很简单,当然,如果你用一些集成环境下的ide去运行汇编的话,那会非常方便,就和C/C++的编译器一样方便,但是在这里,我们主要说下,如何在dosbox下运行汇编程序,这还是稍微麻烦些的。首先,编写你的汇编程序,你可以用记事本,也可以用notepad++等等的工具,完成后,将后缀改为.asm。假设这里我们的文件名是1.asm。然后,下载dosbox,然后打开,打开            
                
         
            
            
            
            反汇编简介概念在传统的软件开发模型中,程序员使用编译器、汇编器、链接器中的一个或者几个创建可执行程序,为了回溯编程过程,可以使用各种工具来撤销汇编和编译过程,这些工具就叫做反汇编器和反编译器。反汇编器:以机器语言作为输入,得到汇编语言形式的输出结果反编译器:以机器语言作为输入,得到高级语言形式的输出结果反汇编面临的困难编译过程会造成丢失:机器语言中没有变量或函数名,只有通过数据的用途来确定。编译属            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2023-07-27 23:38:18
                            
                                73阅读
                            
                                                                             
                 
                
                             
         
            
            
            
             格式: JAE/JNB 标号 ---- 功能: 为高于等于/不低于的转移指令 ----                                  说明: 1. JAE/JNB是同一条指令的两种不同的助记符. ----           2. 该指令用于无符号数进行条件转移.例如:MOV EAX,0x5CMP EAX,0x5JNB  XXXX    ;条件转移成功,因为EAX(            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2023-06-07 17:07:04
                            
                                222阅读
                            
                                                                             
                 
                
                             
         
            
            
            
            JE ;等于则跳转(jump if equal) JNE ;不等于则跳转(jump if not equal)JZ ;为 0 则跳转(jump if zero) JNZ ;不为 0 则跳转JS ;为负则跳转(jump if sign) JNS ;不为负则跳转JC ;进位标志为0则跳转(jump if carry) JNC ;进位标志不为0则跳转JO ;溢出则跳转(jump if overflow)            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2023-07-13 14:11:29
                            
                                162阅读
                            
                                                                             
                 
                
                             
         
            
            
            
            在手机上玩编程 在手机上可以玩编程?对,可以,而且,玩的还是汇编,6502 汇编。那么,用什么软件呢?Jbit(http://sourceforge.net/projects/jbit/),一款开源的 J2ME 程序。6502汇编,还有人在用吗?有,文曲星系统在用,凌阳的cpu 也支持。 下面,简单介绍一下Jbit 的使用: 1、 启动程序后,出现如下界面 2、 选择 Demos 查看例子: &n            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2023-09-13 21:01:31
                            
                                631阅读
                            
                                                                             
                 
                
                             
         
            
            
            
            一、前言最近在学习汇编语言,使用的是读者评价非常高的王爽老师写的《汇编语言》(第三版),为了适应现在各个版本的windows操作系统,所以采用VMWare虚拟机来搭建纯DOS环境。 二、需要的工具VMware-workstation-12、DOS系统镜像文件、汇编编译器masm和连接器link2020-02-17 更新百度云链接链接:https://pan.baidu.com/s/1Ic            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2023-08-13 13:20:18
                            
                                68阅读
                            
                                                                             
                 
                
                                
                     
                                    
                             
         
            
            
            
            目录新建文件准备编写程序并调试分析1.新建工程2.代码编写3.程序调试总结新建文件准备安装并配置KEIL1)在官网下载KEIL安装包。安装注册并下载支持包之后就可以编写程序了。编写程序并调试分析1.新建工程1.照如图顺序新建工程2.新建文件3.这里选择STM32F103VE4.点击 Asm Files (.s) 添加输入文件名5.完成!2.代码编写1.在刚建立的.s文件中添加代码如下AREA MY            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2023-06-07 12:48:07
                            
                                127阅读
                            
                                                                             
                 
                
                                
                     
                                    
                             
         
            
            
            
            内联汇编基础定义:C 代码中直接嵌入汇编语言。采用AT&T语法,参考下图。       AT&T 中的内存寻址址有固定的格式: base_address(offset_address,index,size) 该格式对应的表达式为 :base_address+ offset_address+ index*size。 基本内联汇编是简单的内联形式,其格式为: asm [volatile            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2023-12-06 15:46:05
                            
                                88阅读
                            
                                                                             
                 
                
                                
                     
                                    
                             
         
            
            
            
            简介上一篇文章 ARM64汇编基础 中介绍了汇编在iOS开发中的应用以及ARM汇编基础知识,本文将介绍在C或Objective-C构成的工程中如何嵌入汇编代码。注意在调试ARM汇编时,Xcode的Build对象必须为真机,如果对象为模拟器则是x86汇编。内联汇编汇编与C间接通信在函数中可以直接插入汇编代码来影响函数的运行逻辑,使用的语法为编译指令 __asm__,注意插入汇编有            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2024-01-06 21:41:08
                            
                                93阅读
                            
                                                                             
                 
                
                                
                     
                                    
                             
         
            
            
            
            一、数据传送指令
    1、传送指令: MOV (move)
        格式: mov dst,src
        具体用法: 
        (1) CPU内部寄存器之间的数据传送                 如: mov ah,al
        (2) 立即数送至通用寄存器(非段寄存器)或存储单元     如: mov al,3        mov [bx],1234h            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2023-07-14 08:33:51
                            
                                14阅读
                            
                                                                             
                 
                
                             
         
            
            
            
            基础知识指令与伪指令汇编指令:CPU机器指令的助记符,编译后得到1和0组成的机器码,由CPU读取执行伪指令:本质上不是指令,由编译环境提供,目的在于指导编译过程,最终不会生成机器码不同的ARM风格ARM官方汇编风格:指令一般大写,windows IDE开发环境常用。(譬如:LDR、STR)GNU风格的ARM汇编:指令一般小写,linux中常用。(譬如:ldr、str)ARM汇编的特点ARM汇编特点            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2024-09-13 15:08:14
                            
                                22阅读
                            
                                                                             
                 
                
                                
                     
                                    
                             
         
            
            
            
            # iOS汇编指令的初探
在现代移动设备的操作系统中,iOS是一个非常重要的平台。尽管大多数开发者使用高级语言(如Swift或Objective-C)进行开发,但理解底层的汇编指令仍然对提升编程技能大有裨益。本文将为您简要介绍iOS的汇编指令及其应用。
## 什么是汇编语言?
汇编语言是一种与计算机硬件紧密相关的低级编程语言。它与机器语言有着一一对应的关系,但是相比于机器语言,汇编语言使用了            
                
                    
                        
                                                            
                                                                        
                                                                                        原创
                                                                                    
                            2024-10-17 08:12:40
                            
                                64阅读
                            
                                                                             
                 
                
                             
         
            
            
            
            汇编指令学习接 汇编指令_01  11. LDS从存储器取出32位地址的指令 LDS格式: LDS OPRD1,OPRD2功能: 从存储器取出32位地址的指令.       说明:OPRD1 为任意一个16位的寄存器.OPRD2 为32位的存储器地址.      示例:            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2023-11-13 14:17:38
                            
                                109阅读
                            
                                                                             
                 
                
                             
         
            
            
            
              源程序
  伪指令
    segment和ends
    end
    assume
  标号
  程序的结构
  程序返回
  语法错误和逻辑错误
  编译
  连接
  执行
  谁将可执行文件中的程序装载进入内存并使它运行?
    问题1
    问题2
操作系统的外壳
程序执行过程的跟踪
  源程序 第一步:编写汇编源程序使用文本编辑器(记事本等),用汇            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2023-07-12 21:59:31
                            
                                93阅读
                            
                                                                             
                 
                
                                
                     
                                    
                             
         
            
            
            
            最近看《加密与解密》这本书,他的第一个例子是用查找字符串的方式完成的,但是现在很多软件无法用这种方法完成。作为一位菜鸟,想研究一下利用API断点的方式完成反编译。就用了这个最简单的序列号保护程序作为练手工具了。 首先打开Ollydbg打开要破解的软件,添加API断点。当然之前已经运行过软件了,大致知道弹窗类型,于是就很自然的选择了MessageBoxA()与MessageBoxW()(因            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2023-11-18 19:16:44
                            
                                18阅读
                            
                                                                             
                 
                
                                
                     
                                    
                             
         
            
            
            
            0、前言想要执行gcc - g wk9_20191314.c -o 9week -m32命令时显示找不到必要文件说明缺少库函数,使用如下命令安装库函数:sudo apt-get install libc6-dev-i386用到的指令b main:设置行断点,在main函数处设置断点
i r:查看当前寄存器的值
disassemble:反汇编当前的函数机器码
si:汇编命令,下一步
display            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2023-06-08 10:56:56
                            
                                158阅读
                            
                                                                             
                 
                
                                
                     
                                    
                             
         
            
            
            
            寻找特征码 凡是 内存地址 偏移(除过esp ebp) push寄存器 都需要用 ?? 代替 代码要用的特征码 凡是 内存地址 需要用 ?? 代替            
                
                    
                        
                                                            
                                                                        
                                                                                        原创
                                                                                    
                            2021-07-20 15:04:49
                            
                                410阅读
                            
                                                                             
                 
                
                             
         
            
            
            
            大多数情况下,通过诸如javap等反编译工具来查看源码的字节码已经能够满足我们的日常需求,但是不排除在有些特定场景下,我们需要通过反汇编来查看相应的汇编指令。本文我们就来介绍两个很好用的工具——HSDIS、JITWatchHSDISHSDIS(HotSpot disassembler),一个Sun官方推荐的HotSpot虚拟机JIT编译代码的反汇编插件,其实际上就是一个动态库。这里我们            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2024-02-25 04:48:19
                            
                                101阅读
                            
                                                                             
                 
                
                                
                    