2
跟進this問題,是否有可能讓llvm生成可能跳轉到同一地址空間中的函數中的任意地址的代碼? 即llvm可以發出跳轉到函數中給定地址的代碼嗎?
void func1() {
...
<code that jumps to addr2>
...
}
void func2() {
...
addr2:
<some code in func2()>
...
}
這被認爲是不好的做法,因爲它可能會導致「意大利麪代碼」(http://en.wikipedia.org/wiki/Spaghetti_code)。寫一個新的函數func3,你從func1和func2調用 – Brainless 2015-04-01 09:19:03
@Brainless:「意大利麪代碼」是一種可維護性的風險。由於生成的代碼不需要維護(取而代之,您維護生成代碼的源代碼),因此它是如何表面化的並不重要。 – MSalters 2015-04-01 10:07:49
@MSalters問題更多的是關於發佈這種代碼的可能性,而不是實際編寫代碼。 – Sebi 2015-04-01 10:31:50