解释cmp然后测试

时间:2016-01-04 11:55:42

标签: linux assembly x86

我正在尝试理解这段代码(我用lab1替换地址等):

temp->item = item;

首先检查void enqueue(QueueType *q, element item) { QueueNode *temp=(QueueNode *)malloc(sizeof(QueueNode)); if(temp == NULL ) error("error"); else { temp->item = item->data; temp->link = NULL; if( is_empty(q) ){ q->front = temp; q->rear = temp; } else { q->rear->link = temp; q->rear = temp; } } } 是否等于127.在任何一种情况下都会调用cmpb $0x7f, %al ; 127 je lab1 testb $0x7f, %al ; 127 jne lab2 lab1: testb $0x7f, %al ; 127 je lab3 。我不明白这项检查的目的。 al执行按位AND。如果al的位为127,则结果为零。代码在testb返回后调用,可能与此相关。

0 个答案:

没有答案