我试图了解如何对以下C代码执行程序集优化:
void rgbtocmyk(int r, int g, int b, int ret[]) {
int c = 255 - r;
int m = 255 - g;
int y = 255 - b;
int k = (c < m) ? (c < y ? c : y) : (m < y ? m : y);
c -= k; m -= k; y -= k;
ret[0] = c; ret[1] = m; ret[2] = y; ret[3] = k;
这将生成以下汇编代码(仅限于文本部分),左栏没有优化,右侧优化级别-O1
:
我正在寻找有关如何浏览这些模糊代码的一些指导。我对集会很新,而且我一直在试图理解这些差异。显然,-O1
优化的代码更紧凑,大部分紧凑性都是movl
语句较少的结果。
注意:这是作业。教师要求我在比较两个版本时尽可能准确。