lectures.alex.balgavy.eu

Lecture notes from university.
git clone git://git.alex.balgavy.eu/lectures.alex.balgavy.eu.git
Log | Files | Refs | Submodules

Assembly.html (1787B)


      1 <?xml version="1.0" encoding="UTF-8"?>
      2 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
      3 <html><head><link rel="stylesheet" href="sitewide.css" /><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/><meta name="exporter-version" content="Evernote Mac 6.13.1 (455785)"/><meta name="altitude" content="0"/><meta name="author" content="Alex Balgavy"/><meta name="created" content="2017-11-19 9:25:23 PM +0000"/><meta name="latitude" content="52.37360283034186"/><meta name="longitude" content="4.836072408511082"/><meta name="source" content="desktop.mac"/><meta name="updated" content="2017-11-20 7:47:22 PM +0000"/><title>Assembly</title></head><body><div>symbolic notation for machine language, improves readability</div><div>two syntaxes — Intel and AT&amp;T</div><div><ul><li>Intel: </li><ul><li>order</li><ul><li>operation destination source</li><li>e.g. mov rax, 5</li><li>just like a=5</li></ul><li>no decorations</li></ul><li>AT&amp;T:</li><ul><li>extra decorations like % in front of registers and $ in front of literal values</li><li>not very readable</li><li>order such as: mov 5, %rax</li></ul></ul><div><br/></div></div><div><br/></div><div>First four arguments: %rax, %rdi, %rsi, %rdx</div><div>When you write a subroutine, push the base pointer. Then set the base pointer to the stack pointer.</div><div>At the end of the subroutine, set the stack pointer to the base pointer. Then pop the base pointer. Then ret.</div><div><br/></div><div>Syscall 60 is exit, 1 is write, 0 is read.</div><div>1 is stdout, 0 is stdin, 2 is stderr.</div><div><br/></div><div>Registers store addresses. Parentheses are used to access value at address.</div><div><ul/></div><div><br/></div></body></html>