<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-11742079</id><updated>2012-01-02T09:08:41.340-08:00</updated><category term='programming software status'/><category term='programming languages'/><category term='links'/><category term='software'/><category term='food politics environment'/><category term='science'/><category term='programming'/><title type='text'>Random Numbers</title><subtitle type='html'>Thoughts on programming, science and anything else that comes to mind.</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://echristo.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11742079/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://echristo.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>eric</name><uri>http://www.blogger.com/profile/04365283218030230975</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://1.bp.blogspot.com/_F0X0NX3DcYU/SMLagIGIm6I/AAAAAAAAADk/WXrI8RJeSok/S220/eric.jpg'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>20</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-11742079.post-6128839062524471161</id><published>2008-12-04T22:19:00.000-08:00</published><updated>2008-12-04T22:55:25.340-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='science'/><title type='text'>Environmental Monitoring and Citizen Science</title><content type='html'>&lt;a href="http://www.economist.com"&gt;The Economist&lt;/a&gt; has an &lt;a href="http://www.economist.com/world/international/displayStory.cfm?story_id=12675505"&gt;article&lt;/a&gt; on environmental monitoring. It's the citizen science idea though which makes it particularly compelling. It involves tools to help interested people in gathering information that scientists can later use - and get long term data across a wider range on the planet than any one or team of scientists could possibly get. It's also great in helping kids learn about science: proper collecting of data, investigation, watching things over time, even making hypotheses about the data that they get.&lt;br /&gt;&lt;br /&gt;There are also interesting technical issues with how to enable easy collection, processing, storage and analysis of huge amounts of data, but that can wait until next time.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11742079-6128839062524471161?l=echristo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://echristo.blogspot.com/feeds/6128839062524471161/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=11742079&amp;postID=6128839062524471161' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11742079/posts/default/6128839062524471161'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11742079/posts/default/6128839062524471161'/><link rel='alternate' type='text/html' href='http://echristo.blogspot.com/2008/12/environmental-monitoring-and-citizen.html' title='Environmental Monitoring and Citizen Science'/><author><name>eric</name><uri>http://www.blogger.com/profile/04365283218030230975</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://1.bp.blogspot.com/_F0X0NX3DcYU/SMLagIGIm6I/AAAAAAAAADk/WXrI8RJeSok/S220/eric.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-11742079.post-3906387237682201323</id><published>2008-11-08T16:43:00.000-08:00</published><updated>2008-11-08T19:05:14.966-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='food politics environment'/><title type='text'>Food Production in America</title><content type='html'>Thanks to the great Xeni Jardin over at &lt;a href="http://boingboing.net"&gt;Boing Boing&lt;/a&gt; I ran across an interesting article by &lt;a href="http://www.michaelpollan.com/"&gt;Michael Pollan&lt;/a&gt; about the issues our next President will face about food production in the US. Food prices have crept up steadily over the last few years, driven by everything from skyrocketing oil prices (after transportation the agricultural system uses the most oil in the country) to ethanol production from corn. The latter has been contested in a few places, but it's hard to argue with the first. Pollan says that the era of cheap and abundant food is over and that the new president will need to reform the entire system. I've noticed that my food budget has definitely doubled over the last few years and I'm no larger than I was then so something has had to increase - if it's not my girth it must be the cost of the food :)&lt;br /&gt;&lt;br /&gt;One of the most terrifying facts in the article was this:&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;a system that in 1940 produced 2.3 calories of food energy for every calorie of fossil-fuel energy it used into one that now takes 10 calories of fossil-fuel energy to produce a single calorie of modern supermarket food&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;At any rate as Pollan said:&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;If I could say it in 2 pages I wouldn't have used 8000 words.&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;I encourage people to read the article and think a bit more about the food they buy.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11742079-3906387237682201323?l=echristo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://echristo.blogspot.com/feeds/3906387237682201323/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=11742079&amp;postID=3906387237682201323' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11742079/posts/default/3906387237682201323'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11742079/posts/default/3906387237682201323'/><link rel='alternate' type='text/html' href='http://echristo.blogspot.com/2008/11/food-production-in-america.html' title='Food Production in America'/><author><name>eric</name><uri>http://www.blogger.com/profile/04365283218030230975</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://1.bp.blogspot.com/_F0X0NX3DcYU/SMLagIGIm6I/AAAAAAAAADk/WXrI8RJeSok/S220/eric.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-11742079.post-4195267212304244274</id><published>2008-09-01T13:14:00.000-07:00</published><updated>2008-09-01T13:17:33.570-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='programming languages'/><title type='text'>Just saw the post about google chrome...</title><content type='html'>Here:&lt;br /&gt;&lt;br /&gt;http://blogoscoped.com/google-chrome/&lt;br /&gt;&lt;br /&gt;Other than how absolutely cool it is for Scott McCloud to be doing a comic book about a web browser, there's some very cool and interesting technology in there. The separate process scheme sounds interesting and v8 sounds quite cool as well. This on the heels of TraceMonkey this week from Mozilla. A lot of good research going into dynamic languages and compilation. The fallout from all of this competition should be great.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11742079-4195267212304244274?l=echristo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://echristo.blogspot.com/feeds/4195267212304244274/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=11742079&amp;postID=4195267212304244274' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11742079/posts/default/4195267212304244274'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11742079/posts/default/4195267212304244274'/><link rel='alternate' type='text/html' href='http://echristo.blogspot.com/2008/09/just-saw-post-about-google-chrome.html' title='Just saw the post about google chrome...'/><author><name>eric</name><uri>http://www.blogger.com/profile/04365283218030230975</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://1.bp.blogspot.com/_F0X0NX3DcYU/SMLagIGIm6I/AAAAAAAAADk/WXrI8RJeSok/S220/eric.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-11742079.post-6618409839852733005</id><published>2007-11-30T16:47:00.001-08:00</published><updated>2007-11-30T16:48:44.238-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='programming'/><title type='text'>Dumb ideas...</title><content type='html'>Ever had one of those dumb ideas that you start thinking about and go "hey, this just might work - and not suck too much"?&lt;br /&gt;&lt;br /&gt;Yeah. Me too. This could be entertaining. (Stack slot indeed...)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11742079-6618409839852733005?l=echristo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://echristo.blogspot.com/feeds/6618409839852733005/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=11742079&amp;postID=6618409839852733005' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11742079/posts/default/6618409839852733005'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11742079/posts/default/6618409839852733005'/><link rel='alternate' type='text/html' href='http://echristo.blogspot.com/2007/11/dumb-ideas.html' title='Dumb ideas...'/><author><name>eric</name><uri>http://www.blogger.com/profile/04365283218030230975</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://1.bp.blogspot.com/_F0X0NX3DcYU/SMLagIGIm6I/AAAAAAAAADk/WXrI8RJeSok/S220/eric.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-11742079.post-8095184383725851931</id><published>2007-11-27T01:24:00.000-08:00</published><updated>2007-11-27T01:32:32.685-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='programming software status'/><title type='text'>Lots of talks lately...</title><content type='html'>One on more effective use of gcc, a pair of tutorials on how to use OpenMP and tonight's effort of a brief tutorial and explanation of autotools. If anyone is interested in my slides or pdfs send me email and I'll forward on a copy. I suppose I should make them available somewhere.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://tromey.com/blog/"&gt;Tom&lt;/a&gt; and &lt;a href="http://airs.com/blog/"&gt;Ian&lt;/a&gt; both made posts on them recently - amazingly good timing for me. I agree that a new solution needs to happen, most of autoconf is a pain, takes too long, and is too hard for most people to maintain. I like automake, but am also sympathetic to wanting something new there too. I did look at cmake as someone mentioned in a comment to Ian, but didn't really have time to get into it.&lt;br /&gt;&lt;br /&gt;I've been working on some moderately interesting stuff at work, but can't really post about it yet. Hopefully soon though, not very gcc related unfortunately though.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11742079-8095184383725851931?l=echristo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://echristo.blogspot.com/feeds/8095184383725851931/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=11742079&amp;postID=8095184383725851931' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11742079/posts/default/8095184383725851931'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11742079/posts/default/8095184383725851931'/><link rel='alternate' type='text/html' href='http://echristo.blogspot.com/2007/11/lots-of-talks-lately.html' title='Lots of talks lately...'/><author><name>eric</name><uri>http://www.blogger.com/profile/04365283218030230975</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://1.bp.blogspot.com/_F0X0NX3DcYU/SMLagIGIm6I/AAAAAAAAADk/WXrI8RJeSok/S220/eric.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-11742079.post-4262934914485517058</id><published>2007-09-11T02:13:00.000-07:00</published><updated>2007-09-11T02:24:15.959-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='programming'/><title type='text'>More pointers to other people's blogs...</title><content type='html'>I seem to be doing that these days, but I just ran across this thanks to ncm and found it to be great:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://blogs.msdn.com/devdev/default.aspx"&gt;Developing for Developers&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Ran across it because of the "cache-oblivious data structures" post, stayed for dessert.&lt;br /&gt;&lt;br /&gt;Update: Fixed cnp.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11742079-4262934914485517058?l=echristo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://echristo.blogspot.com/feeds/4262934914485517058/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=11742079&amp;postID=4262934914485517058' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11742079/posts/default/4262934914485517058'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11742079/posts/default/4262934914485517058'/><link rel='alternate' type='text/html' href='http://echristo.blogspot.com/2007/09/more-pointers-to-other-peoples-blogs.html' title='More pointers to other people&apos;s blogs...'/><author><name>eric</name><uri>http://www.blogger.com/profile/04365283218030230975</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://1.bp.blogspot.com/_F0X0NX3DcYU/SMLagIGIm6I/AAAAAAAAADk/WXrI8RJeSok/S220/eric.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-11742079.post-2589678356647336698</id><published>2007-08-28T23:55:00.000-07:00</published><updated>2007-08-28T23:56:07.427-07:00</updated><title type='text'>guess i'm really an employee now</title><content type='html'>Got cut off by SJ on my way up to the rink today...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11742079-2589678356647336698?l=echristo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://echristo.blogspot.com/feeds/2589678356647336698/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=11742079&amp;postID=2589678356647336698' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11742079/posts/default/2589678356647336698'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11742079/posts/default/2589678356647336698'/><link rel='alternate' type='text/html' href='http://echristo.blogspot.com/2007/08/guess-im-really-employee-now.html' title='guess i&apos;m really an employee now'/><author><name>eric</name><uri>http://www.blogger.com/profile/04365283218030230975</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://1.bp.blogspot.com/_F0X0NX3DcYU/SMLagIGIm6I/AAAAAAAAADk/WXrI8RJeSok/S220/eric.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-11742079.post-8978125665708112542</id><published>2007-08-23T10:24:00.000-07:00</published><updated>2007-08-23T10:28:00.584-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='programming'/><category scheme='http://www.blogger.com/atom/ns#' term='links'/><title type='text'>Not much of a post</title><content type='html'>But I thought I'd mention that &lt;a href="http://www.airs.com/ian"&gt;Ian&lt;/a&gt; is writing a series of posts on writing a new linker. The first post is &lt;a href="http://www.airs.com/blog/archives/38"&gt;here&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11742079-8978125665708112542?l=echristo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://echristo.blogspot.com/feeds/8978125665708112542/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=11742079&amp;postID=8978125665708112542' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11742079/posts/default/8978125665708112542'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11742079/posts/default/8978125665708112542'/><link rel='alternate' type='text/html' href='http://echristo.blogspot.com/2007/08/not-much-of-post.html' title='Not much of a post'/><author><name>eric</name><uri>http://www.blogger.com/profile/04365283218030230975</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://1.bp.blogspot.com/_F0X0NX3DcYU/SMLagIGIm6I/AAAAAAAAADk/WXrI8RJeSok/S220/eric.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-11742079.post-7872294283206246272</id><published>2007-03-17T23:57:00.000-07:00</published><updated>2007-03-17T23:58:30.112-07:00</updated><title type='text'>some thoughts on transactional memory</title><content type='html'>Intel has been around the office lately to talk to us about transactional memory and the panacea that it's going to be. Like any silver bullet, it's only effective against werewolves - and fortunately (or unfortunately) there aren't any werewolves attacking me at the office.&lt;br /&gt;&lt;br /&gt;Transactional Memory (or TM) is a process by which multiple processes/threads update shared memory within a 'transaction' similar to a commit by a RDBMS. A transaction will only commit if all updates to memory complete successfully without conflicts. In the case of a conflict we roll back execution to where we started.&lt;br /&gt;&lt;br /&gt;To give TM a little bit of credit though, it does solve a certain set of problems in concurrent programming. Basically TM allows the programmer to minimize the amount of time they worry about getting locks, freeing locks, and probably more importantly debugging why there's a deadlock in the program when something happens with a lock. We call this the SPOD problem at work - "Spinning Pizza of Death". This will make sense to those of you who own a Mac.&lt;br /&gt;&lt;br /&gt;Of course, right now TM is mostly an exercise left to the student (from "The Landscape of Parallel Computing Research: A View From Berkeley"):&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style:italic;"&gt;Transactional memory is a promising but still active research area. Current software-only schemes have high execution time overheads, while hardware-only schemes either lack facilities required for general language support or require very complex hardware. Some form of hybrid hardware-software scheme is likely to emerge, though more practical experience with the use of transactional memory is required before even the functional requirements for such a scheme are well understood.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Nothing comes without a cost though, some estimates of STM implementations have them incurring a 40-50 percent overhead compared with locking based programming. STM also incurs an additional performance hit if it has to guarantee interoperation between TM code and other code.&lt;br /&gt;&lt;br /&gt;The future, I think, holds a couple of directions that will need to go in umm... parallel. We'll need things like transactional memory to deal with things at a low level. We'll also need to do better than source level markup of existing languages to fully take advantage of many core programming. For example, TM is well suited for applications that want to use mutexes or shared memory. We'll need a better way of representing producer/consumer models where message passing is better suited. All in all an interesting time.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11742079-7872294283206246272?l=echristo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://echristo.blogspot.com/feeds/7872294283206246272/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=11742079&amp;postID=7872294283206246272' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11742079/posts/default/7872294283206246272'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11742079/posts/default/7872294283206246272'/><link rel='alternate' type='text/html' href='http://echristo.blogspot.com/2007/03/some-thoughts-on-transactional-memory.html' title='some thoughts on transactional memory'/><author><name>eric</name><uri>http://www.blogger.com/profile/04365283218030230975</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://1.bp.blogspot.com/_F0X0NX3DcYU/SMLagIGIm6I/AAAAAAAAADk/WXrI8RJeSok/S220/eric.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-11742079.post-8786061370172018882</id><published>2007-03-17T23:41:00.000-07:00</published><updated>2007-03-17T23:51:47.438-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='programming'/><title type='text'>std experiences</title><content type='html'>Had a chance to work with a coworker (&lt;a href="http://home.twcny.rr.com/hinnant/"&gt;Howard Hinnant&lt;/a&gt;) lately on a language standardization issue, in this case std::thread:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2184.html"&gt;http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2184.html&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;It was quite an interesting experience. I found that mostly reading and learning how other people are approaching the various issues was the way this time. I'm glad to have been able to listen in as everyone discussed how the proposal should work. I did make a few contributions that seem to have been appreciated so I look forward to things in the future.&lt;br /&gt;&lt;br /&gt;All in all I think Howard's proposal shaped up quite nicely and will be useful as we start to approach concurrency issues in more current use languages in the future.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11742079-8786061370172018882?l=echristo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://echristo.blogspot.com/feeds/8786061370172018882/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=11742079&amp;postID=8786061370172018882' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11742079/posts/default/8786061370172018882'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11742079/posts/default/8786061370172018882'/><link rel='alternate' type='text/html' href='http://echristo.blogspot.com/2007/03/std-experiences.html' title='std experiences'/><author><name>eric</name><uri>http://www.blogger.com/profile/04365283218030230975</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://1.bp.blogspot.com/_F0X0NX3DcYU/SMLagIGIm6I/AAAAAAAAADk/WXrI8RJeSok/S220/eric.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-11742079.post-647918523605640630</id><published>2007-01-30T19:15:00.000-08:00</published><updated>2007-01-30T19:18:47.344-08:00</updated><title type='text'>worth reading</title><content type='html'>Blog that I found somewhere through a link to a link to a link or something:&lt;br /&gt;&lt;br /&gt;&lt;a href=http://www.randsinrepose.com/&gt;Rands In Repose&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;turns out he's a coworker (one of the 15,000 or so), and never met him in person.&lt;br /&gt;&lt;br /&gt;Still, lots of interesting reads there.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11742079-647918523605640630?l=echristo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://echristo.blogspot.com/feeds/647918523605640630/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=11742079&amp;postID=647918523605640630' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11742079/posts/default/647918523605640630'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11742079/posts/default/647918523605640630'/><link rel='alternate' type='text/html' href='http://echristo.blogspot.com/2007/01/worth-reading.html' title='worth reading'/><author><name>eric</name><uri>http://www.blogger.com/profile/04365283218030230975</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://1.bp.blogspot.com/_F0X0NX3DcYU/SMLagIGIm6I/AAAAAAAAADk/WXrI8RJeSok/S220/eric.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-11742079.post-7624429229219309996</id><published>2006-12-23T12:42:00.000-08:00</published><updated>2006-12-23T12:41:45.007-08:00</updated><title type='text'>Lots of gcc work going on...</title><content type='html'>No, not much by me lately outside of darwin maintenance for &lt;a href="http://www.apple.com"&gt;Apple&lt;/a&gt;, but some interesting stuff anyhow:&lt;br /&gt;&lt;br /&gt;Mem-SSA: Diego's work here is finally merged with mainline&lt;br /&gt;&lt;br /&gt;Dataflow branch: Kenny Zadeck's work along with a cast of others (Daniel Berlin, Seongbae Park, Codesourcery)&lt;br /&gt;&lt;br /&gt;gimple-tuples, out-of-ssa: memory savings, speed ups clean ups done by Aldy and Andrew&lt;br /&gt;&lt;br /&gt;IPA: Jan is merging the IPA branch stuff&lt;br /&gt;&lt;br /&gt;autovectorization: as always... the group in haifa is doing great work here&lt;br /&gt;&lt;br /&gt;loop optimizations: zdenek's work here rewriting things&lt;br /&gt;&lt;br /&gt;and more coming... I'll see if I can write information up on each of these.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11742079-7624429229219309996?l=echristo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://echristo.blogspot.com/feeds/7624429229219309996/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=11742079&amp;postID=7624429229219309996' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11742079/posts/default/7624429229219309996'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11742079/posts/default/7624429229219309996'/><link rel='alternate' type='text/html' href='http://echristo.blogspot.com/2006/12/lots-of-gcc-work-going-on.html' title='Lots of gcc work going on...'/><author><name>eric</name><uri>http://www.blogger.com/profile/04365283218030230975</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://1.bp.blogspot.com/_F0X0NX3DcYU/SMLagIGIm6I/AAAAAAAAADk/WXrI8RJeSok/S220/eric.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-11742079.post-3782859789072767911</id><published>2006-12-19T10:03:00.000-08:00</published><updated>2006-12-19T10:11:04.855-08:00</updated><title type='text'>verdict in the tripoli 6 trial</title><content type='html'>Today a Libyan court &lt;a href="http://news.yahoo.com/s/ap/20061219/ap_on_re_af/libya_bulgaria_aids_trial"&gt;condemned&lt;/a&gt; five Bulgarian nurses and a Palestinian doctor to death even after the scientific evidence has pointed to their innocence. There is the possiblity that it's a great extortion plot as Bulgaria was asked to provide reparations - but even so once again the barbarians have won a battle on science.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11742079-3782859789072767911?l=echristo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://echristo.blogspot.com/feeds/3782859789072767911/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=11742079&amp;postID=3782859789072767911' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11742079/posts/default/3782859789072767911'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11742079/posts/default/3782859789072767911'/><link rel='alternate' type='text/html' href='http://echristo.blogspot.com/2006/12/verdict-in-tripoli-6-trial.html' title='verdict in the tripoli 6 trial'/><author><name>eric</name><uri>http://www.blogger.com/profile/04365283218030230975</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://1.bp.blogspot.com/_F0X0NX3DcYU/SMLagIGIm6I/AAAAAAAAADk/WXrI8RJeSok/S220/eric.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-11742079.post-6941342304205122851</id><published>2006-11-09T18:20:00.000-08:00</published><updated>2006-11-11T13:47:03.227-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='software'/><title type='text'>good UI and useful too</title><content type='html'>I'm not really one to pimp something just because it has a pretty interface, but David&lt;div&gt;Watanabe's new project Inquisitor has both style and use.  It wraps up a pretty interface&lt;/div&gt;&lt;div&gt;in a very useful piece of software. It has perhaps the best interface I've seen to search&lt;/div&gt;&lt;div&gt;in a long time.  There's also a very pretty Safari plugin for it that wraps up the interface,&lt;/div&gt;&lt;div&gt;and like most of those sorts of things allows a bit of customization too.  I've been using&lt;/div&gt;&lt;div&gt;it for about a week now and it has quickly become one of my favorite extensions for&lt;/div&gt;&lt;div&gt;any piece of software.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;A quick plug on one of David's other projects: NewsFire. A good OS X application that&lt;/div&gt;&lt;div&gt;I've been using for a while now and it's quite nice.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Links:&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;http://www.inquisitorx.com -- Inquisitor&lt;/div&gt;&lt;div&gt;http://www.inquisitorx.com/beta -- Inquisitor Web Interface&lt;/div&gt;&lt;div&gt;http://newsfirerss.com -- NewsFire&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Edit: re-edited to help the layout. Blogger Beta is painful&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11742079-6941342304205122851?l=echristo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://echristo.blogspot.com/feeds/6941342304205122851/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=11742079&amp;postID=6941342304205122851' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11742079/posts/default/6941342304205122851'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11742079/posts/default/6941342304205122851'/><link rel='alternate' type='text/html' href='http://echristo.blogspot.com/2006/11/good-ui-and-useful-too.html' title='good UI and useful too'/><author><name>eric</name><uri>http://www.blogger.com/profile/04365283218030230975</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://1.bp.blogspot.com/_F0X0NX3DcYU/SMLagIGIm6I/AAAAAAAAADk/WXrI8RJeSok/S220/eric.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-11742079.post-116185691756629873</id><published>2006-10-26T02:58:00.000-07:00</published><updated>2006-11-01T12:11:47.889-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='programming'/><title type='text'>getting around dull software maintenance</title><content type='html'>Software maintenance is dull. No one wants to do it, people would much rather be writing new code - or at least that's how the line usually goes. Most programmers think that software maintenance is either a drudge task or fixing bugs in code that others write. it can really be a time for an engineer to go back and rethink code that's written. After you've fixed the 3rd or 10th or 200th bug in a section of code you often end up with something that resembles spaghetti (from combine):&lt;br /&gt;&lt;br /&gt;  /* Don't eliminate a store in the stack pointer.  */&lt;br /&gt;  if (dest == stack_pointer_rtx&lt;br /&gt;      /* Don't combine with an insn that sets a register to itself if it has&lt;br /&gt;         a REG_EQUAL note.  This may be part of a REG_NO_CONFLICT sequence.  */&lt;br /&gt;      || (rtx_equal_p (src, dest) &amp;&amp;amp; find_reg_note (insn, REG_EQUAL, NULL_RTX))&lt;br /&gt;      /* Can't merge an ASM_OPERANDS.  */&lt;br /&gt;      || GET_CODE (src) == ASM_OPERANDS&lt;br /&gt;      /* Can't merge a function call.  */&lt;br /&gt;      || GET_CODE (src) == CALL&lt;br /&gt;      /* Don't eliminate a function call argument.  */&lt;br /&gt;      || (CALL_P (i3)&lt;br /&gt;          &amp;&amp;amp; (find_reg_fusage (i3, USE, dest)&lt;br /&gt;              || (REG_P (dest)&lt;br /&gt;                  &amp;&amp;amp; REGNO (dest) &lt; FIRST_PSEUDO_REGISTER&lt;br /&gt;                  &amp;&amp;amp; global_regs[REGNO (dest)])))&lt;br /&gt;      /* Don't substitute into an incremented register.  */&lt;br /&gt;      || FIND_REG_INC_NOTE (i3, dest)&lt;br /&gt;      || (succ &amp;&amp;amp; FIND_REG_INC_NOTE (succ, dest))&lt;br /&gt;      /* Don't substitute into a non-local goto, this confuses CFG.  */&lt;br /&gt;      || (JUMP_P (i3) &amp;&amp;amp; find_reg_note (i3, REG_NON_LOCAL_GOTO, NULL_RTX))&lt;br /&gt;#if 0&lt;br /&gt;      /* Don't combine the end of a libcall into anything.  */&lt;br /&gt;      /* ??? This gives worse code, and appears to be unnecessary, since no&lt;br /&gt;         pass after flow uses REG_LIBCALL/REG_RETVAL notes.  Local-alloc does&lt;br /&gt;         use REG_RETVAL notes for noconflict blocks, but other code here&lt;br /&gt;         makes sure that those insns don't disappear.  */&lt;br /&gt;      || find_reg_note (insn, REG_RETVAL, NULL_RTX)&lt;br /&gt;#endif&lt;br /&gt;      /* Make sure that DEST is not used after SUCC but before I3.  */&lt;br /&gt;      || (succ &amp;&amp;amp; ! all_adjacent&lt;br /&gt;          &amp;&amp;amp; reg_used_between_p (dest, succ, i3))&lt;br /&gt;      /* Make sure that the value that is to be substituted for the register&lt;br /&gt;         does not use any registers whose values alter in between.  However,&lt;br /&gt;         If the insns are adjacent, a use can't cross a set even though we&lt;br /&gt;         think it might (this can happen for a sequence of insns each setting&lt;br /&gt;         the same destination; last_set of that register might point to&lt;br /&gt;         a NOTE).  If INSN has a REG_EQUIV note, the register is always&lt;br /&gt;         equivalent to the memory so the substitution is valid even if there&lt;br /&gt;         are intervening stores.  Also, don't move a volatile asm or&lt;br /&gt;         UNSPEC_VOLATILE across any other insns.  */&lt;br /&gt;      || (! all_adjacent&lt;br /&gt;          &amp;&amp;amp; (((!MEM_P (src)&lt;br /&gt;                || ! find_reg_note (insn, REG_EQUIV, src))&lt;br /&gt;               &amp;&amp;amp; use_crosses_set_p (src, INSN_CUID (insn)))&lt;br /&gt;              || (GET_CODE (src) == ASM_OPERANDS &amp;&amp;amp; MEM_VOLATILE_P (src))&lt;br /&gt;              || GET_CODE (src) == UNSPEC_VOLATILE))&lt;br /&gt;      /* If there is a REG_NO_CONFLICT note for DEST in I3 or SUCC, we get&lt;br /&gt;         better register allocation by not doing the combine.  */&lt;br /&gt;      || find_reg_note (i3, REG_NO_CONFLICT, dest)&lt;br /&gt;      || (succ &amp;&amp;amp; find_reg_note (succ, REG_NO_CONFLICT, dest))&lt;br /&gt;      /* Don't combine across a CALL_INSN, because that would possibly&lt;br /&gt;         change whether the life span of some REGs crosses calls or not,&lt;br /&gt;         and it is a pain to update that information.&lt;br /&gt;         Exception: if source is a constant, moving it later can't hurt.&lt;br /&gt;         Accept that special case, because it helps -fforce-addr a lot.  */&lt;br /&gt;      || (INSN_CUID (insn) &lt; last_call_cuid &amp;&amp;amp; ! CONSTANT_P (src)))&lt;br /&gt;    return 0;&lt;br /&gt;&lt;br /&gt;This is what Joel is talking about  &lt;a href="http://www.joelonsoftware.com/articles/fog0000000069.html"&gt;here&lt;/a&gt; when he says:&lt;br /&gt;&lt;br /&gt;"When you throw away code and start from scratch, you are throwing away all that knowledge. All those collected bug fixes. Years of programming work."&lt;br /&gt;&lt;br /&gt;Now, this code is ugly. It should probably be rethought and refactored a bit, but not rewritten completely. There's another area in that file that's a single function that is more than a thousand lines long. Should that be rethought? Probably. Deleted and rewritten from scratch? Unlikely.&lt;br /&gt;&lt;br /&gt;This is how you turn dull software maintenance tasks into exciting new times: you periodically go back and rethink code, it's part of maintenance too and it gets you doing "new" code while doing the necessary bug fixing that got you into that code in the first place. A good rule of thumb is that every time you fix a bug you should try to clean up the surrounding code in some way so that the next person that goes through has an easier time than you did - and you don't lose the benefit of all of the years of bug fixing in that area.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11742079-116185691756629873?l=echristo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://echristo.blogspot.com/feeds/116185691756629873/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=11742079&amp;postID=116185691756629873' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11742079/posts/default/116185691756629873'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11742079/posts/default/116185691756629873'/><link rel='alternate' type='text/html' href='http://echristo.blogspot.com/2006/10/keeping-it-simple-in-software.html' title='getting around dull software maintenance'/><author><name>eric</name><uri>http://www.blogger.com/profile/04365283218030230975</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://1.bp.blogspot.com/_F0X0NX3DcYU/SMLagIGIm6I/AAAAAAAAADk/WXrI8RJeSok/S220/eric.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-11742079.post-115441421828249675</id><published>2006-07-31T23:32:00.000-07:00</published><updated>2006-10-26T02:57:00.190-07:00</updated><title type='text'>type sizes in C vs bit sizes</title><content type='html'>An interesting difference between C type sizes and the architectures that they're hosted on has come across in a rather annoying manner since I've been working on byteswapping builtins for gcc. The standard library function (for integers at least) comes in the standard, long, and long long styles, e.g. ctz, ctzl, ctzll. This has some odd side effects for things which usually return a value of the size of a register or the size of the input. Writing a general routine when you're using a cross compiler is difficult because it depends on the size of the type on the target machine which isn't always readily available. This is why a lot of these routines should be based on the size of the type that was wanted - based on the types in stdint.h for example.&lt;br /&gt;&lt;br /&gt;For the new byte swapping builtins I followed this idea, we now have __builtin_bswap32 and __builtin_bswap64 which take and return types of int32_t and int64_t respectively. We needed to add some additional size specific types into gcc for this, but it'll help when we want to specify additional builtins of this sort. Hopefully future revisions of the various standards will have standard libraries that require sizes and types instead of just types.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11742079-115441421828249675?l=echristo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://echristo.blogspot.com/feeds/115441421828249675/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=11742079&amp;postID=115441421828249675' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11742079/posts/default/115441421828249675'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11742079/posts/default/115441421828249675'/><link rel='alternate' type='text/html' href='http://echristo.blogspot.com/2006/07/type-sizes-in-c-vs-bit-sizes.html' title='type sizes in C vs bit sizes'/><author><name>eric</name><uri>http://www.blogger.com/profile/04365283218030230975</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://1.bp.blogspot.com/_F0X0NX3DcYU/SMLagIGIm6I/AAAAAAAAADk/WXrI8RJeSok/S220/eric.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-11742079.post-115395317489091907</id><published>2006-07-26T15:27:00.000-07:00</published><updated>2006-10-26T02:56:58.664-07:00</updated><title type='text'>mythical man month</title><content type='html'>This &lt;a href="http://www.acmqueue.com/modules.php?name=Content&amp;pa=showpage&amp;amp;pid=401"&gt;post&lt;/a&gt; on silver bullets is a great one. Makes you realize that while some software is just poorly designed, software engineering is an incremental process and that anyone that thinks different is fooling themselves. The author is mostly talking of fad technologies, but I also remember another paper of the problem with "throw-it away and design it again" software engineering. Sometimes you can do it better again. Most of the time you can't and just end up wasting a lot of time and money. The Mythical Man-Month should be required reading for all software engineering managers - and not as a "we can do better than that" document.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11742079-115395317489091907?l=echristo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://echristo.blogspot.com/feeds/115395317489091907/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=11742079&amp;postID=115395317489091907' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11742079/posts/default/115395317489091907'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11742079/posts/default/115395317489091907'/><link rel='alternate' type='text/html' href='http://echristo.blogspot.com/2006/07/mythical-man-month.html' title='mythical man month'/><author><name>eric</name><uri>http://www.blogger.com/profile/04365283218030230975</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://1.bp.blogspot.com/_F0X0NX3DcYU/SMLagIGIm6I/AAAAAAAAADk/WXrI8RJeSok/S220/eric.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-11742079.post-115370866460290550</id><published>2006-07-23T19:03:00.000-07:00</published><updated>2006-10-26T02:56:58.604-07:00</updated><title type='text'>current projects</title><content type='html'>I've been working on various bits of compiler work for &lt;a href="http://www.apple.com"&gt;Apple&lt;/a&gt; lately. A lot of the public work that's been seen has been of the cleanup variety - fixing up testcase failures from previous releases. However, I've also been working on some bugs relating to the object file format. We've made some recent maneuvers toward having a more sane definition in the toolchain - moving toward linker generated gots and plts, but for a great deal of the existing toolchains this would require a lot of work.&lt;br /&gt;&lt;br /&gt;    In my previous work I hadn't needed to work around limitations in the object file format - at least not in any great degree. Sure the MIPS ABI could use some changes, and there definitely aren't enough bits in the elf flags field for all of the various instruction sets or processors for the target. In the grand scheme of things these are small peanuts. Mach-O (or macho) is the format that was chosen at work about the time that work on OS X was begun.&lt;br /&gt;&lt;br /&gt;    Mach-O isn't very flexible. The object file format contains bitfields, not the least of which is for relocations. There are 4 bits of relocations available to a single architecture. For those of you counting at home this gives you 16 relocations. The fact that mach-o by default defines five of them leaves an architecture 11 additional relocations that you can define. Under ELF even the x86 port has 38 relocations, including the ones for TLS. The PowerPC mach-o port is out of relocations completely and yet if we had another 4 bits we probably couldn't do all of the TLS relocations we should have. If we want to get rid of the the compiler generated stubs, or have compiler generated thread-local storage a new way of defining relocations is needed. Or we could move to ELF.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11742079-115370866460290550?l=echristo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://echristo.blogspot.com/feeds/115370866460290550/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=11742079&amp;postID=115370866460290550' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11742079/posts/default/115370866460290550'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11742079/posts/default/115370866460290550'/><link rel='alternate' type='text/html' href='http://echristo.blogspot.com/2006/07/current-projects.html' title='current projects'/><author><name>eric</name><uri>http://www.blogger.com/profile/04365283218030230975</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://1.bp.blogspot.com/_F0X0NX3DcYU/SMLagIGIm6I/AAAAAAAAADk/WXrI8RJeSok/S220/eric.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-11742079.post-111325494602070140</id><published>2005-04-11T14:29:00.000-07:00</published><updated>2006-10-26T02:56:58.549-07:00</updated><title type='text'></title><content type='html'>Assorted Hacking&lt;br /&gt;&lt;p&gt;Lately I've been dealing with the random bugs of close to release software. The 64-bit eabi stuff is giving UNPREDICTABLE results for a simple:&lt;/p&gt;&lt;p&gt;&lt;br /&gt;la reg,0x80000000&lt;/p&gt;&lt;p&gt;&lt;br /&gt;macro instruction. Now, I hate macro instructions. There's never an excuse for not saying exactly what you mean if you're going to bother to write assembly in the first place. Especially in cases like this - there are over 2 thousand lines of code in gas just to deal with the la and li macros - and have I mentioned that we don't document them anywhere?&lt;/p&gt;&lt;p&gt;&lt;br /&gt;I mean anywhere. One of the canonical bibles of the MIPS architecture is the Kane and Heinrich book. It describes this instruction as "an addiu and an lui if needed". This description is so woefully inadequate that it's hard to specify what the input to the macro should be. If it's an absolute expression like we have above it doesn't specify if we should sign extend the address before adding it. The method of least surprise says that we should. Then there's whether or not we should warn about this questionable behavior. Right now, we do - but only for n64.&lt;/p&gt;&lt;p&gt;&lt;br /&gt;The other question is whether or not you should just use the fully qualified address for both 32 and 64-bit cases. This would solve the problem, and is indeed allowed by gas, but it's a little iffy in my book.&lt;/p&gt;&lt;p&gt;&lt;br /&gt;I suppose I should start adding all of these things to the wiki page here: &lt;a href="http://en.wikibooks.org/wiki/Programming:MIPS_assembly"&gt;MIPS Assembly Programming Wikibook&lt;/a&gt;.&lt;/p&gt;&lt;p&gt;&lt;br /&gt;Just remember kids, assembler macros are a tool of the devil.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11742079-111325494602070140?l=echristo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://echristo.blogspot.com/feeds/111325494602070140/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=11742079&amp;postID=111325494602070140' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11742079/posts/default/111325494602070140'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11742079/posts/default/111325494602070140'/><link rel='alternate' type='text/html' href='http://echristo.blogspot.com/2005/04/assorted-hacking-lately-ive-been.html' title=''/><author><name>eric</name><uri>http://www.blogger.com/profile/04365283218030230975</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://1.bp.blogspot.com/_F0X0NX3DcYU/SMLagIGIm6I/AAAAAAAAADk/WXrI8RJeSok/S220/eric.jpg'/></author><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-11742079.post-111198316058791144</id><published>2005-03-27T20:11:00.000-08:00</published><updated>2006-10-26T02:56:58.437-07:00</updated><title type='text'>First Entry</title><content type='html'>Trying out the new blog interface over here. Rather disappointed with Livejournal so I decided to move over here. Much nicer for the first few blogs. Hopefully a change of pace on the entries as well.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11742079-111198316058791144?l=echristo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://echristo.blogspot.com/feeds/111198316058791144/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=11742079&amp;postID=111198316058791144' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11742079/posts/default/111198316058791144'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11742079/posts/default/111198316058791144'/><link rel='alternate' type='text/html' href='http://echristo.blogspot.com/2005/03/first-entry.html' title='First Entry'/><author><name>eric</name><uri>http://www.blogger.com/profile/04365283218030230975</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://1.bp.blogspot.com/_F0X0NX3DcYU/SMLagIGIm6I/AAAAAAAAADk/WXrI8RJeSok/S220/eric.jpg'/></author><thr:total>0</thr:total></entry></feed>
