由汇编代码确定switch语句

cpp 复制代码
int  switch2(int x)  
{
   int result=0;
   switch(x)
   {
      /* switch语句主体缺失 */
   }
   return result;
}

在编译函数时,GCC为程序的初始部分以及跳转表生成了如下汇编代码。

1 MOVL 8(%ebp), %eax ;x位于相对于寄存器%ebp偏移量为8的地方。

2 ADDL $2, %eax

3 CMPL $6, %eax

4 JA .L2

5 JMP *.L8(,%eax,4)

由1、2、3和4行,有, 所以x的取值为-2、-1、0、1、2、3和4。

由JA .L2和.LONG .L2,知-1为缺省值。

标号.L6有2和3两个情况标号值。

switch2的跳转表

.L8

.LONG .L3

.LONG .L2

.LONG .L4

.LONG .L5

LONG .L6

.LONG .L6

.LONG .L7

.L8是分配地址的起始标号,与这个标号对应的地址会作为间接跳转(第5行)的基地址。

相关推荐
我在人间贩卖青春9 天前
汇编之伪指令
汇编·伪指令
我在人间贩卖青春9 天前
汇编之伪操作
汇编·伪操作
济6179 天前
FreeRTOS基础--堆栈概念与汇编指令实战解析
汇编·嵌入式·freertos
myloveasuka9 天前
汇编TEST指令
汇编
我在人间贩卖青春9 天前
汇编编程驱动LED
汇编·点亮led
我在人间贩卖青春9 天前
汇编和C编程相互调用
汇编·混合编程
myloveasuka10 天前
寻址方式笔记
汇编·笔记·计算机组成原理
请输入蚊子10 天前
《操作系统真象还原》 第六章 完善内核
linux·汇编·操作系统·bochs·操作系统真像还原
myloveasuka10 天前
指令格式举例
汇编·笔记·计算机组成原理
我在人间贩卖青春11 天前
汇编之分支跳转指令
汇编·arm·分支跳转