首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 嵌入开发 > 汇编语言 >

帮忙找下汇编中红色标志(2734)对应的C语言是哪句?解决思路

2012-02-16 
帮忙找下汇编中红色标志(2734)对应的C语言是哪句????C语言源码static void camera_callback(u32 mask, voi

帮忙找下汇编中红色标志(2734)对应的C语言是哪句????
C语言源码
static void camera_callback(u32 mask, void *dev)
{
struct mxc_v4l_frame *done_frame;
struct mxc_v4l_frame *ready_frame;

cam_data *cam = (cam_data *) dev;
if (cam == NULL)
return;

if (mask == 1) {
printk("oh no,mask is 1 set cam->overflow = 1 ######");
cam->overflow = 1;
}

if (list_empty(&cam->working_q)) {
if (empty_wq_cnt == 0) {
printk(KERN_ERR "camera_callback: working queue empty %d\n",empty_wq_cnt);
}
empty_wq_cnt++;
if (list_empty(&cam->ready_q)) {
cam->skip_frame++;
} else {
ready_frame =
list_entry(cam->ready_q.next, struct mxc_v4l_frame,
queue);
list_del(cam->ready_q.next);
list_add_tail(&ready_frame->queue, &cam->working_q);
cam->enc_update_eba(ready_frame->paddress,
&cam->ping_pong_csi);
}
return;
}

done_frame =
list_entry(cam->working_q.next, struct mxc_v4l_frame, queue);
if (done_frame->buffer.flags & V4L2_BUF_FLAG_QUEUED) {
done_frame->buffer.flags |= V4L2_BUF_FLAG_DONE;
done_frame->buffer.flags &= ~V4L2_BUF_FLAG_QUEUED;

if (list_empty(&cam->ready_q)) {
cam->skip_frame++;
} else {
ready_frame =
list_entry(cam->ready_q.next, struct mxc_v4l_frame,
queue);
list_del(cam->ready_q.next);
list_add_tail(&ready_frame->queue, &cam->working_q);
cam->enc_update_eba(ready_frame->paddress,
&cam->ping_pong_csi);
}

/* Added to the done queue */
list_del(cam->working_q.next);
list_add_tail(&done_frame->queue, &cam->done_q);

/* Wake up the queue */
cam->enc_counter++;
wake_up_interruptible(&cam->enc_queue);
} else {
printk(KERN_ERR "camera_callback :buffer not queued\n");
}
}


放汇编
000025cc <camera_callback>:
  25cc:e1a0c00d movip, sp
  25d0:e92dd870 stmdbsp!, {r4, r5, r6, fp, ip, lr, pc}
  25d4:e24cb004 subfp, ip, #4; 0x4
  25d8:e2515000 subsr5, r1, #0; 0x0
  25dc:e1a04000 movr4, r0
  25e0:089da870 ldmeqiasp, {r4, r5, r6, fp, sp, pc}
  25e4:e3500001 cmpr0, #1; 0x1
  25e8:1a000002 bne25f8 <camera_callback+0x2c>
  25ec:e59f0174 ldrr0, [pc, #372]; 2768 <.text+0x2768>
  25f0:ebfffffe bl0 <printk>
  25f4:e585416c strr4, [r5, #364]
  25f8:e5952030 ldrr2, [r5, #48]
  25fc:e2854030 addr4, r5, #48; 0x30
  2600:e1520004 cmpr2, r4
  2604:1a00001f bne2688 <camera_callback+0xbc>
  2608:e59f615c ldrr6, [pc, #348]; 276c <.text+0x276c>
  260c:e5961000 ldrr1, [r6]
  2610:e3510000 cmpr1, #0; 0x0
  2614:1a000001 bne2620 <camera_callback+0x54>
  2618:e59f0150 ldrr0, [pc, #336]; 2770 <.text+0x2770>
  261c:ebfffffe bl0 <printk>
  2620:e5963000 ldrr3, [r6]
  2624:e2852020 addr2, r5, #32; 0x20
  2628:e2833001 addr3, r3, #1; 0x1
  262c:e5863000 strr3, [r6]
  2630:e595c020 ldrip, [r5, #32]
  2634:e15c0002 cmpip, r2
  2638:05953168 ldreqr3, [r5, #360]
  263c:02833001 addeqr3, r3, #1; 0x1
  2640:05853168 streqr3, [r5, #360]
  2644:089da870 ldmeqiasp, {r4, r5, r6, fp, sp, pc}
  2648:e59c1004 ldrr1, [ip, #4]
  264c:e59c2000 ldrr2, [ip]
  2650:e59f311c ldrr3, [pc, #284]; 2774 <.text+0x2774>


  2654:e5821004 strr1, [r2, #4]
  2658:e58c3004 strr3, [ip, #4]
  265c:e5943004 ldrr3, [r4, #4]
  2660:e5812000 strr2, [r1]
  2664:e584c004 strip, [r4, #4]
  2668:e58c4000 strr4, [ip]
  266c:e583c000 strip, [r3]
  2670:e51c0058 ldrr0, [ip, #-88]
  2674:e58c3004 strr3, [ip, #4]
  2678:e2851038 addr1, r5, #56; 0x38
  267c:e1a0e00f movlr, pc
  2680:e595f47c ldrpc, [r5, #1148]
  2684:e89da870 ldmiasp, {r4, r5, r6, fp, sp, pc}
  2688:e5123038 ldrr3, [r2, #-56]
  268c:e2426058 subr6, r2, #88; 0x58
  2690:e3130002 tstr3, #2; 0x2
  2694:0a000030 beq275c <camera_callback+0x190>
  2698:e3833004 orrr3, r3, #4; 0x4
  269c:e3c33002 bicr3, r3, #2; 0x2
  26a0:e5023038 strr3, [r2, #-56]
  26a4:e595c020 ldrip, [r5, #32]
  26a8:e2853020 addr3, r5, #32; 0x20
  26ac:e15c0003 cmpip, r3
  26b0:05953168 ldreqr3, [r5, #360]
  26b4:02833001 addeqr3, r3, #1; 0x1
  26b8:05853168 streqr3, [r5, #360]
  26bc:0a00000e beq26fc <camera_callback+0x130>
  26c0:e59c1004 ldrr1, [ip, #4]
  26c4:e59c2000 ldrr2, [ip]
  26c8:e59f30a4 ldrr3, [pc, #164]; 2774 <.text+0x2774>
  26cc:e5821004 strr1, [r2, #4]
  26d0:e58c3004 strr3, [ip, #4]
  26d4:e5943004 ldrr3, [r4, #4]
  26d8:e5812000 strr2, [r1]
  26dc:e584c004 strip, [r4, #4]
  26e0:e58c4000 strr4, [ip]
  26e4:e583c000 strip, [r3]
  26e8:e51c0058 ldrr0, [ip, #-88]
  26ec:e58c3004 strr3, [ip, #4]
  26f0:e2851038 addr1, r5, #56; 0x38
  26f4:e1a0e00f movlr, pc
  26f8:e595f47c ldrpc, [r5, #1148]
  26fc:e5951030 ldrr1, [r5, #48]
  2700:e59f306c ldrr3, [pc, #108]; 2774 <.text+0x2774>
  2704:e8915000 ldmiar1, {ip, lr}
  2708:e2850028 addr0, r5, #40; 0x28
  270c:e58ce004 strlr, [ip, #4]
  2710:e5813004 strr3, [r1, #4]
  2714:e5904004 ldrr4, [r0, #4]
  2718:e59f3058 ldrr3, [pc, #88]; 2778 <.text+0x2778>
  271c:e2862058 addr2, r6, #88; 0x58
  2720:e58ec000 strip, [lr]
  2724:e5802004 strr2, [r0, #4]
  2728:e5813000 strr3, [r1]
  272c:e5824004 strr4, [r2, #4]
  2730:e5860058 strr0, [r6, #88]
  2734:e5842000 strr2, [r4]
  2738:e5953178 ldrr3, [r5, #376]
  273c:e3a01001 movr1, #1; 0x1
  2740:e0833001 addr3, r3, r1
  2744:e5853178 strr3, [r5, #376]
  2748:e2850e17 addr0, r5, #368; 0x170
  274c:e1a02001 movr2, r1
  2750:e3a03000 movr3, #0; 0x0
  2754:ebfffffe bl0 <__wake_up>
  2758:e89da870 ldmiasp, {r4, r5, r6, fp, sp, pc}
  275c:e59f0018 ldrr0, [pc, #24]; 277c <.text+0x277c>
  2760:ebfffffe bl0 <printk>
  2764:e89da870 ldmiasp, {r4, r5, r6, fp, sp, pc}
  2768:000000a0 andeqr0, r0, r0, lsr #1
  276c:0000015c andeqr0, r0, ip, asr r1
  2770:000000d0 ldreqdr0, [r0], -r0
  2774:00200200 eoreqr0, r0, r0, lsl #4
  2778:00100100 andeqsr0, r0, r0, lsl #2
  277c:000000fc streqdr0, [r0], -ip


帮忙找下汇编语言中红色标志的(2734:e5842000 strr2,)对应的C语言是哪句????谢谢了....

[解决办法]
有源码还不简单,查查你的编译器命令,建立带源数据的asm文件就行了,或者lst也可以


[解决办法]
对这类汇编不熟悉。不过,一般是一条 c 语句对应于一组汇编指令;单个的汇编指令,一般只是 c 语句的一部分。应该是 list_add_tail(&done_frame->queue, &cam->done_q); 的最后一指令?再下面的应该是属于 cam->enc_counter++; 语句的了。

热点排行