当前位置: 首页 > wzjs >正文

合肥做网站开发多少钱电商网站怎样优化

合肥做网站开发多少钱,电商网站怎样优化,网建工作,织梦系统做的商城网站ASMbits--常用算术运算指令 1 基本运算算术指令--最基础1.1 加法和减法1.2 移位操作1.3 乘法 2 practice2.1 编写invert(int n)2.2 编写judge_odd(int n)2.3 计算绝对值abs(int n)2.4 add(int n1, int n2)函数2.4 shift寄存器2.5 sihft ath right2.6 shift left 在ARMv7汇编中&…

ASMbits--常用算术运算指令

  • 1 基本运算算术指令--最基础
    • 1.1 加法和减法
    • 1.2 移位操作
    • 1.3 乘法
  • 2 practice
    • 2.1 编写invert(int n)
    • 2.2 编写judge_odd(int n)
    • 2.3 计算绝对值abs(int n)
    • 2.4 add(int n1, int n2)函数
    • 2.4 shift寄存器
    • 2.5 sihft ath right
    • 2.6 shift left

在ARMv7汇编中,代码片段:

1: b 1b	//Done

作用是创建一个无限循环,使程序永远停留在当前位置,不在执行后续命令;

语法解释:

  • 1::这是一个局部标签(local label)。在 ARM 汇编中,以数字开头的标签(如 1:)是局部标签,可以通过 b 1b 或 b 1f 引用。
    1b:表示向后查找最近的 1: 标签(Backward)。
    1f:表示向前查找最近的 1: 标签(Forward)。

  • b 1b:这是一个分支指令(Branch),跳转到最近的 1: 标签(向后查找)。由于标签 1: 就在当前行,这条指令会无限循环跳转到自身。

代码 1: b 1b 的作用是让程序在当前位置无限循环,防止后续未定义代码的执行。这是裸机编程或嵌入式系统中常见的“安全终止”方法。
具体在裸机程序(无操作系统)或嵌入式系统中,这种无限循环常用于:

  • 防止程序执行到未定义的内存区域(例如代码结束后未初始化的内存)。
  • 保持程序在完成所有任务后“挂起”(例如在调试时观察结果);

1 基本运算算术指令–最基础

1.1 加法和减法

  • ADD 加法
    语法:ADD{条件}{S} 目标寄存器, 操作数1, 操作数2
    功能:将操作数1和操作数2相加,结果存入目标寄存器。
ADD R0, R1, R2     @ R0 = R1 + R2
ADD R3, R4, #10    @ R3 = R4 + 10
  • SUB减法
    语法:SUB{条件}{S} 目标寄存器, 操作数1, 操作数2
    功能:从操作数1中减去操作数2,结果存入目标寄存器。
SUB R0, R1, R2     @ R0 = R1 - R2
SUB R3, R4, #5      @ R3 = R4 - 5

1.2 移位操作

  • LSL逻辑左移
    语法:LSL{条件}{S} 目标寄存器, 操作数, 移位位数
    功能:将操作数左移指定位数,低位补零。
LSL R0, R1, #4      @ R0 = R1 << 4
  • LSR逻辑右移
    语法:LSR{条件}{S} 目标寄存器, 操作数, 移位位数
    功能:将操作数右移指定位数,高位补零。
LSR R0, R1, #3      @ R0 = R1 >> 3(无符号)
  • ASR(算术右移)
    语法:ASR{条件}{S} 目标寄存器, 操作数, 移位位数
    功能:将操作数右移指定位数,高位补符号位(用于有符号数)
ASR R0, R1, #2      @ R0 = R1 >> 2(保留符号)
  • ROR循环右移
    语法:ROR{条件}{S} 目标寄存器, 操作数, 移位位数
    功能:将操作数循环右移指定位数,移出的位补到高位。
ROR R0, R1, #8      @ R0 = R1 循环右移8位

1.3 乘法

  • MUL无符号乘法
    语法:MUL{条件}{S} 目标寄存器, 操作数1, 操作数2
    功能:操作数1 × 操作数2,结果低32位存入目标寄存器。
MUL R0, R1, R2     @ R0 = (R1 × R2) 的低32位
  • MIL乘加
    语法:MLA{条件}{S} 目标寄存器, 操作数1, 操作数2, 操作数3
    功能:操作数1 × 操作数2 + 操作数3。
MLA R0, R1, R2, R3  @ R0 = (R1 × R2) + R3

2 practice

2.1 编写invert(int n)

Write a function that returns the bitwise inversion of its parameter.
int invert (int n);

.global _start
_start:mov r0, #1bl invert1: b 1b    // Done.global invert
invert:MVN r0,r0  // MVN把R0里面的数取反然后再进行存储BX lr	//return caller

2.2 编写judge_odd(int n)

算法:最低位是0还是1,若是1则odd为1,若是为0,则odd为0;如何获得最低位呢,直接使用n & 1;
Steps:

  1. 将r0与1进行AND操作,结果存在某个寄存器,比如r0本身。
  2. 然后比较这个结果是否为0,如果不为0,则返回1,否则返回0。
.global _start
_start:mov r0, #1bl odd1: b 1b    // Done.global odd
odd:AND r0,r0,#1BX lr

2.3 计算绝对值abs(int n)

算法:进制补码中,负数的符号位是1,正数或零是0。所以,如果我能得到符号位的掩码,可能可以用异或和减法来计算绝对值。比如,对于n,如果符号位是0,那么绝对值是n本身;如果符号位是1,绝对值是~n + 1。或者用另一种方法:将n与符号位的掩码异或,然后减去掩码。这可能更高效。
步骤:

  1. 将n算术右移31位,得到mask(0或-1)。
  2. 异或n和mask,得到n ^ mask。
  3. 减去mask,即(n ^ mask) - mask。因为mask是0或-1,当mask是-1时,减法相当于加1。
.global _start
_start:mov r0, #10bl abs1: b 1b    // Done.global abs
abs:ASR r1, r0, #31	// r1 = n>>31 to generate maskEOR r0, r0, r1		// r0 = n ^ maskSUB r0, r0, r1		// r0 = r0 - maskBX lr

2.4 add(int n1, int n2)函数

即第一个参数传递给R0,第二个参数传递给R1;

.global _start
_start:mov r0, #1  // First function parameter is always passed through r0.mov r1, #1  // Second function parameter is always passed through r1.bl add      // Return value is always in r0.1: b 1b     // Done.global add
add:ADD R0,R0,R1BX LR

2.4 shift寄存器

即将该参数移位到24位,低8位;

.global _start
_start:ldr r0, =0x12345678bl shiftb _start        // End of testing code// Convert one U32 sample to U8 format
shift:LSR r0,r0,#24	//将输入参数 r0 右移24位,保留高8位到低8位BX lr

2.5 sihft ath right

// A test case to test your function with.global _start
_start:ldr r0, =0x40000bl shiftb _start        // End of testing code// Return 1/4 amplitude for a S32 sample
shift:ASR r0,r0,#2	//算数右移BX lr

2.6 shift left

// A test case to test your function with.global _start
_start:ldr r0, =0x1234bl shiftb _start        // End of testing code// Convert one S16 to S32 format
shift:LSL R0,R0,#16	// left shift 16BX lr

以上是ARMv7汇编语言的常见算术指令运算;

http://www.dtcms.com/wzjs/57477.html

相关文章:

  • 果洛营销网站建设服务百度商务合作联系
  • 网站推广项目郑州做网站推广
  • 上海公司注册流程和费用网站seo视频
  • 网站的专题怎么做百度seo收费
  • 苏州网站建设公司电话东莞建设企业网站
  • 男女做那事是什 网站seo整站优化费用
  • 怎么做关于易烊千玺的网站网站查询关键词排名软件
  • 地方门户网站系统有哪些创建网站的公司
  • 市场营销公司网站seo优化培训
  • 东莞网站案例营销网站如何做优化排名
  • 厦门市建设局查询保障摇号网站东莞seo网络推广专
  • 如何设置自己网站的关键词网络推广免费平台
  • 西部数码 空间做2个网站2023引流软件
  • b2c电商平台排名东莞seo优化排名推广
  • 自己搞个网站企业网站分析报告
  • 怎么免费建设金融网站怎么自己创建网址
  • 网站的flash怎么做的郑州seo代理外包公司
  • wordpress 4.9更新最新seo教程
  • 知晓程序网站怎么做短视频营销常用平台有
  • 哪个网站做ppt能赚钱百度推广400客服电话
  • 做网站引流的最佳方法2022百度seo优化工具
  • 网站上怎么做弹幕效果图百度推广有效果吗?
  • 做网站客户最关心哪些问题新媒体营销案例分析
  • 做网站什么最重要珠海网站建设
  • 网站建设需要学多久知乎电商运营平台
  • 自己怎么做直播网站吗长沙做搜索引擎的公司
  • 深圳微网站牛排seo系统
  • wordpress视频手机版昆山seo网站优化软件
  • 网络托管济南seo快速霸屏
  • 做网站的贴吧关键字排名查询