一些代码编译后的指令,捉虫很有用

阿波罗11号代码考古:从历史源码看嵌入式系统的并发隐患与设计权衡 在嵌入式系统与实时操作系统中,共享数据的并发访问是一个基础且关键的技术概念。其核心原理在于多个任务或中断服务例程可能同时访问同一数据资源,若缺乏适当的同步机制,就会引发竞态条件,导致数据不一致或逻辑错误。这一问题的技术价值在于,它直接关系到系统的确定性与可靠性,尤其是在资源受限的安全关键系统中。现代嵌入式开发通过互斥锁、信号量、中断屏蔽等机制来保障数据访问的原子性。应用场景广泛存在于物联网设备、工业控制、航空航天等对实时性要求极高的领域。本文通过对阿波罗11号制导计算机(AGC)源代码的模拟运行与测试,深入 阅读详情
ly = (lSum>>2);
上面这句话可以分解为两个指令:
mov      r14,r14,asr #2
指令意思是,将r14寄存器中的值(lSum),右移2位,然后又重新保存在r14寄存器中
str      r14,[r13,#0x1c]
指令意思是,将r14寄存器中的值,保存到一个局部变量,这个局部变量的存放寄存器是[r13,#0x1c],

NOTE: 与str相对的一个指令是ldr,表示LOAD
[0xe59d0020]   ldr      r0,[r13,#0x20]
意思是将局部变量寄存器寻址[r13,#0x20]得到的值,装载在r0寄存器中

lSum = pSrcTop[lLeftDb + 1];       其实就是lSum = *(pSrcTop + lLeftDb + 1);
这个语句的指令集可以是
add      r3,r1,r14
指令的意思是,将r14寄存器(lLeftDb)和r1寄存器(pSrcTop)中的值相加,保存在r3寄存器(一个存放pSrcTop + lLeftDb的临时寄存器)中
* ldrb     r9,[r3,#1]
第二个指令的意思是,用r3寄存器来寻址,[r3,#1],并取值(*),结果保存在r9寄存器(lSum)中

 lSum += pSrcTop[lSrcLineStep + lLeftDb + 1];
其实就是 lSum = lSum + *(pSrcTop + lSrcLineStep + lLeftDb + 1)
换成指令集就是
[0xe084e00e] * add      r14,r4,r14
意思是r14寄存器中的pSrcTop,加上r4寄存器中的lSrcLineStep,并仍然保存在r14寄存器中
[0xe08ee001]   add      r14,r14,r1
意思是r14寄存器,加上r1寄存器(lLeftDb),并保存在r14中
[0xe5dea001]   ldrb     r10,[r14,#1]
意思是直接寻址,并将结果保存在r10中,*(pSrcTop + lSrcLineStep + lLeftDb + 1)
[0xe08a9009]   add      r9,r10,r9
意思是lSum = lSum + r10寄存器中的内容,结果保存在r9寄存器中(lSum)


NOTE:
ldrb 和 ldr的区别是
ldrb是对寄存器寻址后取值,然后保存在另一个寄存器。而ldr是直接把寄存器寻址得到的地址值,保存在另一个寄存器
【交易系统系列30】用CMake为C++20交易系统打好第一根桩 摘要: 本文从开发高性能交易系统的工程基础出发,强调项目结构、构建工具和代码组织的重要性。作者以咖啡豆与猫毛的比喻,说明混乱的工程结构会像杂质一样影响系统性能。文章详细介绍了如何用C++20和CMake搭建一个模块化、可扩展的交易系统框架,包括分层目录结构、严格的CMake配置(如编译器优化选项-O3 -march=native)和单元测试集成。示例中实现了一个教学级订单簿(使用std::map存储订单),同时指出其性能缺陷(动态内存分配、缓存不友好),为后续优化埋下伏笔。 阅读详情

相关推荐

kali系统之复现漏洞分析与审计

0x00 前言 复现这个漏洞的过程中觉得很有分析的必要,而作者源码结合 log 调试分析的这篇文章已经写得比较详尽了,就想自己纯从审计的角度写一下分析巩固一下。 总之,如有不当,烦请评论捉虫,我会在第一时间响应并评论提示,谢谢。 0x01 简介 漏洞成因 可构造 uri 使 mod_proxy 请求转发给内部服务器造成 SSRF 。 影响版本 实验环境 代审环节个人建议是亲手编译调试 Apache 跟进,可以参照 P 神的教程: 编译调试 Apache 调试补充事项 不一定要 Ubantu,Kali 上

kali_Ma的博客 1557

ARM汇编之MOV指令

一、指令格式 MOV{条件}{S} 目的寄存器,源操作数 二、指令详解 MOV指令可完成从另一个寄存器、被移位的寄存器或立即数赋值到目的寄存器。其中S选项为指令的操作结果是否操作CPSR中的条件标志位,当没有S选项时指令不更新CPSR中的条件标志位结果。 三、指令实例 MOV  R0,R1 ; R0 = R1; MOV PC,R14 ;PC = R14; MOV  R

lsywk的专栏 1万+

IAR使用教程:断点与单步调试操作指南

掌握IAR使用教程中的核心技巧,重点讲解断点设置与单步调试操作,帮助开发者高效定位代码问题,提升嵌入式开发效率。实用性强,适合初学者与进阶用户参考。

weixin_30356433的博客 1327

vspm原型机指令集‘捉虫记’:聊聊for循环里i=i+1为啥会报错

本文探讨了在VSPM原型机中使用miniCC编译器时,for循环中`i=i+1`报错的原因及解决方案。通过分析miniCC的语法解析器设计限制和VSPM指令集特性,揭示了教学编译器的特殊约束,并提供了实用的代码修改建议和调试技巧,帮助开发者更好地理解编译器工作原理。

weixin_30856725的博客 448

mu_编译器_编辑爆率的

mu_编译器_编辑爆率的

VCS和UVM常用编译选项

VCS编译选项 -full64 在64bit模式下编译、仿真,用于64位操作系统 -j8 指定编译器可以并行编译的进程数为8 -timescale=1ns/1ps 指定仿真时间和精度 +libext+.v+.V+.sv+.svh 识别.v、.sv、.svh等多种格式文件 -sverilog 支持system verilog 编译 -f xxx.lisf 指定包含所有设计文件列表的文件名 -top test 设置顶层模块为test。(指包含.

qq_40571921的博客 9934

寒假捉虫记——从一段损坏的调用栈开始折腾

放假在家,继续调试《家园》。目前的进度是MinGW上的编译链接都已通过,游戏程序也已经可以跑起来并进入主菜单界面,但加载关卡之后就会闪退。这让我想起了以前上中学时玩盗版游戏的日子。那个年代的单机游戏估计大多是用C/C++写的,一个不小心的内存操作就会让进程崩掉;而且那个年代的操作系统没现在稳定,可能破解技术也不够先进,从电脑城里买来的五六块钱的盗版游戏质量参差不齐。很多游戏跑着跑着就闪退,有的甚至

纸箱猪的专栏 4485

esp32 python开发环境搭建_eclipse esp32开发环境搭建

安装方法基本是按照官网提供的方法来操作https://github.com/espressif/idf-eclipse-plugin#GettingStarted但是官网的方法安装之后还是不能编译成功的,第一次编译会出现一下问题问题1:Building in: E:\eclipse-workspace\helloworlk\buildcmake -G Ninja -DCMAKE_TOOLCHAIN...

weixin_39978276的博客 1263

手把手教你解决STM32F1xx系列HAL库编译错误:从30个报错到0的实战记录

本文记录了STM32F1xx系列HAL库项目中,因头文件包含冲突导致30个编译错误的完整排查与解决过程。通过分析错误链,定位到在用户驱动文件中错误包含了标准库头文件`stm32f10x.h`,与HAL库的`stm32f103xb.h`产生定义冲突。文章详细阐述了四步排查法,并总结了避免此类CMSIS相关编译错误的最佳实践与头文件管理原则。

i7j8k9l的博客 490

雷电模拟器安装面具环境并过软件检测系列(看这一篇就够了!)

雷电模拟器安装面具环境并过基本软件的环境检测

qq_45059975的博客 6万+

行人重识别技术(Re-ID)概述、研究现状以及相关数据集下载

ReID技术概述什么是ReID一般流程Re-ID特点研究现状难点数据集reid常用数据集以及下载链接评价指标实现思路研究方式基于表征学习基于度量学习基于局部特征全局特征切片姿态基于视频序列RQEN基于GANCamStyleDG-NetGAN总结对比未来方向建议文献 什么是ReID 行人重识别是指利用计算机视觉技术,判断在不同时间段、不同监控下出现的行人图像是否属于同一人员的技术。行人重识别是最近几年在视频分析领域下热门的研究领域,可以看做是人脸识别应用的拓展。现在大街上的监控较多,由于设备质量、成像光线、.

留缘的博客 1万+

从第一位程序员到 AI 时代的领航者:代码世界里的“她”力量

女性往往具备更强的跨界融合能力和细腻的用户感知能力,在“技术与人文的十字路口”,她们将比纯粹的“代码机器”爆发出更强大的创造力。如果我们训练 AI 模型的工程师团队是清一色的单一性别、单一族裔(例如传统的“硅谷白人男性俱乐部”),那么这个 AI 生成的简历筛选算法、医疗诊断模型或是自动驾驶策略,必然会带有难以察觉的系统性偏见。的代码,去擦拭掉历史上的偏见灰尘。就在阿波罗 11 号即将降落月球表面的最后 3 分钟,由于雷达系统的硬件故障,登月舱的计算机突然被大量无关的数据淹没,系统濒临崩溃,警报声大作。

TonyBai 664

新能源知识库(37)三代储能电芯介绍

2025年储能电芯三代技术演进概述 截至2025年6月,储能电芯已明确划分为三代: 第一代(280Ah):2019-2023年主流,能量密度180Wh/kg,循环寿命8000次,成本降至0.6元/Wh; 第二代(314Ah):2023年起主导,容量超1kWh,能量密度提升20%,循环寿命达15000次,系统成本降低15%; 第三代(500Ah+):2024年量产,能量密度突破440Wh/L(如宁德时代587Ah、阳光电源684Ah),20尺集装箱容量达6-9MWh,零部件成本降30%。 技术路线分化:卷绕派

竹君子之家 7910

补充:1.2 Code::Block介绍 debug方法介绍

Project→console application→go→hello word console appllication 控制台应用程序 Folder to creat project in 创建工程所在的目录 -workspace →批了一块地 hello word →要完成的整个工程项目 sources → 盖房子所需要各种工程材料 main.c → 主函数 :房子大框 ctrl+滚轮...

weixin_45351288的博客 321

揭秘CAS:深入理解与应用解析

在并发编程中,Compare-And-Swap(CAS)机制作为一种无锁算法,凭借其高效性和避免线程阻塞的优势,受到广泛关注。CAS不仅在底层实现上有着重要地位,还在实际开发中发挥着关键作用。本文将从CAS的工作原理、在Java中的实现及其增强机制来回顾和加深理解一下CAS。

曾经“等你生日那天”都遥远得像未来,如今却可欢愉的挥手说“下个十年见” 85万+

SAP_MM模块-服务类采购详细讲解案例

SAP_MM模块服务类采购订单配置及业务测试案例详解,包括前台业务操作、后台配置以及使用过程中的问题处理

风沙的博客 5124

【转载】要成为一名嵌入式工程师需要具备哪些技能

要成为一名嵌入式工程师需要具备的技能。这个就是嵌入式,一个外人看来神奇,内人看来痛苦,不过如果你看到驱动两个LED闪动的时候,会有种莫名其妙的兴奋的话,那欢迎你,咱们是同类。

Milky Way Galaxy 827

MATLAB基础应用精讲-【数模应用】数字预失真(DPD)(附MATLAB代码实现)

近年来,随着无线通信技术的发展,高功率放大器 (PA) 在提高信号传输功率的同时,也带来了非线性失真问题。PA的非线性失真会造成信号频谱扩展、功率下降、邻道干扰等问题,严重影响系统性能。为了克服PA的非线性失真,数字预失真 (DPD) 技术应运而生。DPD技术通过在发射机中引入一个非线性模块,对信号进行预失真处理,从而补偿PA的非线性失真。

qq_36130719的博客 896

linux 函数栈溢出,64位Linux下的栈溢出

今天在看《捉虫日记》,其中讲解的Linux下的栈缓冲区溢出是32位机器的,和我的64位机器有些不同之处。下面是我在64位Linux (Ubuntu14) 下的栈缓冲区溢出实验的记录。首先是有溢出漏洞的程序,这个程序来自于《捉虫日记》。#includevoid overflow(char *arg){char buf[12];strcpy(buf, arg);}int main(int argc, ...

weixin_30175731的博客 696

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

初阶linux2环境基础开发工具完整教程

本文系统介绍了Linux下C/C++开发的完整工具链,涵盖七大核心内容:1)yum软件包管理器的安装使用;2)vim编辑器的三种模式及高效操作;3)gcc/g++编译器的四阶段编译流程及库链接原理;4)gdb调试工具的使用方法;5)Makefile项目自动化构建;6)进度条程序的实现原理;7)Git代码版本管理及Github上传流程。文章通过具体命令示例和图示,详细讲解了从环境配置、代码编写、编译调试到版本管理的全流程开发技能,是Linux开发者的实用指南。

code_whiter的博客 195

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

初阶linux2( Linux 环境基础开发工具使用指南)

Linux开发工具速览 本文系统介绍了Linux下常用开发工具链: 1️⃣ yum软件包管理,支持一键安装/卸载; 2️⃣ vim编辑器详解三种模式及高效操作; 3️⃣ gcc编译四步骤与动静态库区别; 4️⃣ gdb调试技巧需-g生成调试版; 5️⃣ Makefile自动化构建规则与执行流程; 6️⃣ 进度条小程序实战\r刷新与缓冲区机制; 7️⃣ git版本控制三板斧配置与使用。 涵盖从编码、编译、调试到版本管理的完整开发生态,辅以生动比喻和代码示例,适合Linux初学者快速上手核心工具。

code_whiter的博客 440

Python学习笔记之1 - 程序之道

第一章           程序之道   一直以来没有认认真真地研究一门语言。最近很想沉下心来读一本书,因为最近在看一本叫《机器学习实战》的书,里面的实现都是用python来搞之,加上自己正好不会python,很想让自己从头到尾再认真地学一遍语言(当然指的是计算机语言),于是开始沉下心来学习一下Python。   我选的这本书也是《机器学习实战》在其附录中推荐的,名为: 《How_to_

汛汛小帅哥的专栏 415

软件测试攻城狮必备基础知识【后续继续更新】

前言 本篇文章主要为学生讲解软件测试攻城狮必备的知识,用于学员快速查询知识与复习。 一、软件 软件是什么 答:行业话叫"捉虫" 软件的概念 初学者的错误观点【“软件就是程序,软件开发就是编程序”】 软件是计算机系统中与硬件相互依存的另一部分,它是包含程序,数据及其相关文档的完整集合 程序就是事先设计的功能和性能要求执行的指令序列 数据是使程序能正常操纵信息的数据结构 文档是与程序开发,维护和使用有关的图文材料 软件的分类 系统软件 服务性程序:如诊断程...

明哥 1171
上一篇: 关于对Rectangle的边界处理
下一篇: 链表回顾
carpinter
博客等级 码龄19年 26粉丝 14原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值