社区
硬件/系统
帖子详情
汇编中如何实现switch case 语句?
yejinwei
2008-04-10 02:25:13
在汇编中如何实现switch case语句的功能,如果我们用if-else形式去判断的话当case很多的时候效率就会比较慢,而在CASE是顺序相连时我们可以使用跳转表,但问题就是当case不顺序相连且case语句较多和两个case间相差很大时,我们怎样处理?谢谢!
...全文
1625
4
打赏
收藏
汇编中如何实现switch case 语句?
在汇编中如何实现switch case语句的功能,如果我们用if-else形式去判断的话当case很多的时候效率就会比较慢,而在CASE是顺序相连时我们可以使用跳转表,但问题就是当case不顺序相连且case语句较多和两个case间相差很大时,我们怎样处理?谢谢!
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
4 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
用户 昵称
2008-04-10
打赏
举报
回复
一般都是用cmp + je来做的,这种方法最简单,switch的值也不用连续
alan001
2008-04-10
打赏
举报
回复
地址数组啊
cnzdgs
2008-04-10
打赏
举报
回复
首先需要switch的取值范围是连续的,用一个数组(地址表)储存各个case标号的地址。例如:
switch (n)
{
case 0:
case 1:
case 2:
case 3:
}
AddressTable DD OFFSET Label0,OFFSET Label1,OFFSET Label2,OFFSET Label3
mov esi,n
jmp AddressTable[esi*4]
Yofoo
2008-04-10
打赏
举报
回复
比较临近使用 转换表 + 跳转表
相差比较大用二分法if-else
switch
-
case
语句
不加break为什么后面的
语句
可以继续执行?
本文详细对比了
switch
-
case
与if-else在代码
实现
和应用场合的区别,通过具体的代码示例和
汇编
语言解释了
switch
-
case
结构
中
break
语句
的重要性。了解不同分支
语句
的特点,有助于更高效地进行程序设计。
C语言反
汇编
_
switch
_
case
本文详细解析了C语言
中
switch
-
case
语句
在不同情况下的反
汇编
表现,包括生成大表、小表及偏移量的条件,揭示了
switch
-
case
在编译层面的高效
实现
机制。
滴水三期:day17.1-
switch
语句
反
汇编
本文详细探讨了C++
中
switch
语句
的正向
实现
和反
汇编
分析,揭示了其在不同
case
数量和常量差值下的执行策略。对于少量且连续的
case
,
switch
使用大表优化;对于不连续或大量
case
,可能采用顺序比较。此外,还介绍了大表与小表的生成条件,以及它们如何节省内存和提高效率。通过对反
汇编
的解析,展示了
switch
语句
在不同场景下的执行流程。
switch
case
分支
语句
汇编
分析
本文详细分析了C语言
中
switch
-
case
语句
在
汇编
层面的
实现
,包括当
case
分支少、多且连续、删除单个分支及删除多个分支时的情况。在
汇编
代码
中
,可以看到对目标参数的存储、与
case
值的比较以及通过跳转指令执行相应代码的过程。删除
case
分支会导致跳转地址的变化,优化后的代码旨在节省内存空间。
switch
语句
详解及底层
实现
原理
本文详细介绍了
switch
语句
的用法、C语言
中
的
switch
底层
汇编
实现
,以及其与ifelse的差异。重点讨论了
switch
的优化策略,包括
case
值对下标的影响和实际的内存布局。作者还提到了初次阅读
汇编
代码时遇到的问题和后续学习的方向。
硬件/系统
2,644
社区成员
17,229
社区内容
发帖
与我相关
我的任务
硬件/系统
VC/MFC 硬件/系统
复制链接
扫一扫
分享
社区描述
VC/MFC 硬件/系统
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章