ERROR: Complete output from command python setup.py egg_info:
ERROR: Traceback (most recent call last):
File "/tmp/pip-install-cm90jl7u/pdal/setup.py", line 64, in get_pdal_config
stdout=subprocess.PIPE, stderr=subprocess.PIPE).communicate()
File "/usr/lib/python3.6/subprocess.py", line 709, in __init__
restore_signals, start_new_session)
File "/usr/lib/python3.6/subprocess.py", line 1344, in _execute_child
raise child_exception_type(errno_num, err_msg, err_filename)
FileNotFoundError: [Errno 2] No such file or directory: 'pdal-config': 'pdal-config'
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "<string>", line 1, in <module>
File "/tmp/pip-install-cm90jl7u/pdal/setup.py", line 120, in <module>
for item in get_pdal_config('--python-version').split():
File "/tmp/pip-install-cm90jl7u/pdal/setup.py", line 68, in get_pdal_config
'Could not find pdal-config %r: %s' % (pdal_config, ex))
OSError: Could not find pdal-config 'pdal-config': [Errno 2] No such file or directory: 'pdal-config': 'pdal-config'
----------------------------------------
ERROR: Command "python setup.py egg_info" failed with error code 1 in /tmp/pip-install-cm90jl7u/pdal/
“ call” 将标签_1的地址压入堆栈,并执行其代码。为了继续执行“ operation_a”等,“ label_1”必须包含一个“ ret”,该弹出弹出 label_1的地址并以“ operation_a”继续,依此类推。
我有问题
_main:
.
..
...
call label_1
operation_a
...
..
.
在这种情况下,“ je”跳至label_1,因此我无法在“ label_1”中的指令集中添加“ ret”,然后...
如何从跳转到主要代码的后面回来?是否有条件跳转来“调用”标签?
一个朋友提到我可以在label_1的末尾添加一个“ jmp aux_label”,并在main函数中添加该“ aux_label”,但是如果我碰巧做了很多“ je”,我最终会创建很多标签
答案 0 :(得分:0)
没有条件调用之类的东西。但是您可以将呼叫与条件跳转结合起来:
...
jne no_call
call label_1
no_call:
operation_a
...
这样,如果不满足相等条件,则跳过call
命令,并且不会进行任何调用。如果满足相等条件,JNE
不执行任何操作,则您执行call
,然后最终ret
从它到operation_a
。
no_call
不是一个操作,它是一个标签。因此,no_call
的地址和operation_a
的地址是同一件事,以防万一。
“将JNE标记向下几行”的技巧与汇编中的if()
语句一样接近。
在汇编中编码时,创建许多标签是生活中不幸的事实。 :)