Untitled diff
3 removals
3 lines
2 additions
2 lines
rjsHelpers.updateElement('#solution', '<form action=\"/common/exercises/3704/solutions/109469\" class=\"edit_solution\" data-init=\"fileupload-form\" data-toggle=\"validation\" enctype=\"multipart/form-data\" id=\"edit_solution_109469\" method=\"post\" onsubmit=\"jQuery.ajax({data:jQuery.param(jQuery(this).serializeArray()) + \'&authenticity_token=\' + encodeURIComponent(\'3+RYLDLpI0qx1kB8a1t/jLpyu35y9iPt/eAutMjLsl4=\'), dataType:\'script\', type:\'post\', url:\'/common/exercises/3704/solutions/109469\'}); return false;\"><div style=\"margin:0;padding:0;display:inline\"><input name=\"_method\" type=\"hidden\" value=\"put\" /><input name=\"authenticity_token\" type=\"hidden\" value=\"3+RYLDLpI0qx1kB8a1t/jLpyu35y9iPt/eAutMjLsl4=\" /><\/div>\n<h3 class=\'legend\'>Lösung bearbeiten<\/h3>\n<input id=\"solution_solution_parts_attributes_0_id\" name=\"solution[solution_parts_attributes][0][id]\" type=\"hidden\" value=\"136764\" /><div id=\'solution_109469_tab_1\'><div class=\'exercise_part_5422 solution-part\'>\n \n <input id=\"solution_solution_parts_attributes_0_exercise_part_id\" name=\"solution[solution_parts_attributes][0][exercise_part_id]\" type=\"hidden\" value=\"5422\" />\n <div class=\'row\'>\n <div class=\'col-sm-12\'>\n <div class=\'form-group\'>\n <label for=\"solution_solution_parts_attributes_0_exercise_type_text\">Text<\/label>\n <input checked=\"checked\" class=\"solution-field exercise-type\" id=\"solution_solution_parts_attributes_0_exercise_type_text\" name=\"solution[solution_parts_attributes][0][exercise_type]\" type=\"radio\" value=\"text\" />\n <label for=\"solution_solution_parts_attributes_0_exercise_type_wiki\">Markdown<\/label>\n <input class=\"solution-field exercise-type\" id=\"solution_solution_parts_attributes_0_exercise_type_wiki\" name=\"solution[solution_parts_attributes][0][exercise_type]\" type=\"radio\" value=\"wiki\" />\n <\/div>\n <\/div>\n <\/div>\n <div class=\'type-code type-wiki type-text type row\'>\n <div class=\'col-sm-12\'>\n <div class=\'type-wiki type\'>\n <div class=\'callout callout-info\'>\n <p>Sie können Ihren Text mit Markdown formatieren. Eine vollständige Dokumentation finden Sie unter: <a href=\"http://johnmacfarlane.net/pandoc/demo/example9/pandocs-markdown.html\" target=\"_blank\">Pandocs Markdown<\/a> <br />Bitte beachten Sie, dass LaTeX-Befehle nur begrenzt (und nur innerhalb einer Mathe-Umgebung) verwendet werden können.<\/p>\n <\/div>\n <\/div>\n <textarea class=\"solution-field codemirror-area\" cols=\"40\" id=\"solution_solution_parts_attributes_0_text\" name=\"solution[solution_parts_attributes][0][text]\" rows=\"20\">// Kommentierte Register mit Berechnungen, unten mit gegebenen Variaben.

int dummy(int y, int* z)
 {
 asm (
01 "movl 0x8(%ebp), %ecx\\n“ 
 //%eax=? ; %ecx=y ; %edx=?
02 "movl 0xc(%ebp), %eax\\n" 
 //%eax=z ; %ecx=y ; %edx=?
03 "movl (%eax), %edx\\n" 
 //%eax=z ; %ecx=y ; %edx=z
04 "xorl %eax, %eax\\n“ 
 //%eax=0 ; %ecx=y ; %edx=z
05 "addl %edx, %eax\\n" 
 //%eax=z ; %ecx=y ; %edx=z
06 "imull %ecx, %eax\\n" 
 //%eax=y*z ; %ecx=y ; %edx=z
07 "andl %eax, %edx\\n" 
 //%eax=y*z ; %ecx=y ; %edx=(y*z)&z
08 "leal (, %eax, 4), %eax\\n" 
 //%eax=4(y*z) ; %ecx=y ; %edx=(y*z)&z
09 "notl %eax\\n" 
 //%eax=~4(y*z) ; %ecx=y ; %edx=(y*z)&z
10 "andl $15, %eax\\n" 
 //%eax=~4(y*z)&15 ; %ecx=y ; %edx=(y*z)&z
11 "imull %eax, %edx\\n" 
 //%eax=~4(y*z)&15 ; %ecx=y ; %edx=((y*z)&z) * (~4(y*z)&15)
12 "movl 0xc(%ebp), %eax\\n" 
 //%eax=z ; %ecx=y ; %edx=((y*z)&z) * (~4(y*z)&15)
13 "movl %edx,(%eax)\\n" 
 //%eax=*((y*z)&z) * (~4(y*z)&15) ; %ecx=y ; %edx=((y*z)&z) * (~4(y*z)&15)
14 "xorl %eax, %eax\\n" 
 //%eax=0 ; %ecx=y ; %edx=((y*z)&z) * (~4(y*z)&15)

 );
 }
 
 int main()
 {
 int a = 10;
 int temp = dummy(2, &a);
 printf("Rueckgabe von dummy(2, &a) fuer a == 10: %d (Inhalt von eax)\\n",
 temp);
 printf("Neuer Wert von a: %d\\n", a);
 return 0;
 }



//Mit Variablen:


//y=2, *z= *a (=10)

int dummy(int y, int* z)
 {
 asm (
01 "movl 0x8(%ebp), %ecx\\n“ //%eax=? ; %ecx=2 ; %edx=?
02 "movl 0xc(%ebp), %eax\\n" //%eax=0xA ; %ecx=2 ; %edx=?
03 "movl (%eax), %edx\\n" //%eax=0xA ; %ecx=2 ; %edx=10
04 "xorl %eax, %eax\\n“ //%eax=0 ; %ecx=2 ; %edx=10
05 "addl %edx, %eax\\n" //%eax=10 ; %ecx=2 ; %edx=10
06 "imull %ecx, %eax\\n" //%eax=20 ; %ecx=2 ; %edx=10
07 "andl %eax, %edx\\n" //%eax=20 ; %ecx=2 ; %edx=0
08 "leal (, %eax, 4), %eax\\n" //%eax=80 ; %ecx=2 ; %edx=0
09 "notl %eax\\n" //%eax=47 ; %ecx=2 ; %edx=0
10 "andl $15, %eax\\n" //%eax=15 ; %ecx=2 ; %edx=0
11 "imull %eax, %edx\\n" //%eax=15 ; %ecx=2 ; %edx=0
12 "movl 0xc(%ebp), %eax\\n" //%eax=0xA ; %ecx=2 ; %edx=0
13 "movl %edx,(%eax)\\n" //%eax=0xA ; %ecx=2 ; %edx=0
 (speicher Wert von %edx in Register 0xA)
14 "xorl %eax, %eax\\n" //%eax=0 ; %ecx=2 ; %edx=0

 );
 } <\/textarea>\n <\/div>\n <\/div>\n<\/div>\n<script type=\'text/javascript\'>\n //<![CDATA[\n applicationScripts.solutions.initializeSolutionPartFormFields(\".solution-part.exercise_part_5422\");\n //]]>\n<\/script><\/div>\n<div class=\"row\"><div class=\"col-sm-12\"><div class=\"form-actions\"><input class=\"btn btn-success btn-block\" id=\"solution_submit\" name=\"commit\" type=\"submit\" value=\"Lösung speichern\" />\n<a class=\"btn btn-default btn-block\" href=\"#\" onclick=\"jQuery.ajax({data:\'authenticity_token=\' + encodeURIComponent(\'3+RYLDLpI0qx1kB8a1t/jLpyu35y9iPt/eAutMjLsl4=\'), dataType:\'script\', type:\'get\', url:\'/common/exercises/3704/solutions/109469\'}); return false;\">Abbrechen<\/a>\n<\/div><\/div><\/div>\n<\/form>');
rjsHelpers.updateElement('#solution', '<form action=\"/common/exercises/3704/solutions/109469\" class=\"edit_solution\" data-init=\"fileupload-form\" data-toggle=\"validation\" enctype=\"multipart/form-data\" id=\"edit_solution_109469\" method=\"post\" onsubmit=\"jQuery.ajax({data:jQuery.param(jQuery(this).serializeArray()) + \'&authenticity_token=\' + encodeURIComponent(\'3+RYLDLpI0qx1kB8a1t/jLpyu35y9iPt/eAutMjLsl4=\'), dataType:\'script\', type:\'post\', url:\'/common/exercises/3704/solutions/109469\'}); return false;\"><div style=\"margin:0;padding:0;display:inline\"><input name=\"_method\" type=\"hidden\" value=\"put\" /><input name=\"authenticity_token\" type=\"hidden\" value=\"3+RYLDLpI0qx1kB8a1t/jLpyu35y9iPt/eAutMjLsl4=\" /><\/div>\n<h3 class=\'legend\'>Lösung bearbeiten<\/h3>\n<input id=\"solution_solution_parts_attributes_0_id\" name=\"solution[solution_parts_attributes][0][id]\" type=\"hidden\" value=\"136764\" /><div id=\'solution_109469_tab_1\'><div class=\'exercise_part_5422 solution-part\'>\n \n <input id=\"solution_solution_parts_attributes_0_exercise_part_id\" name=\"solution[solution_parts_attributes][0][exercise_part_id]\" type=\"hidden\" value=\"5422\" />\n <div class=\'row\'>\n <div class=\'col-sm-12\'>\n <div class=\'form-group\'>\n <label for=\"solution_solution_parts_attributes_0_exercise_type_text\">Text<\/label>\n <input checked=\"checked\" class=\"solution-field exercise-type\" id=\"solution_solution_parts_attributes_0_exercise_type_text\" name=\"solution[solution_parts_attributes][0][exercise_type]\" type=\"radio\" value=\"text\" />\n <label for=\"solution_solution_parts_attributes_0_exercise_type_wiki\">Markdown<\/label>\n <input class=\"solution-field exercise-type\" id=\"solution_solution_parts_attributes_0_exercise_type_wiki\" name=\"solution[solution_parts_attributes][0][exercise_type]\" type=\"radio\" value=\"wiki\" />\n <\/div>\n <\/div>\n <\/div>\n <div class=\'type-code type-wiki type-text type row\'>\n <div class=\'col-sm-12\'>\n <div class=\'type-wiki type\'>\n <div class=\'callout callout-info\'>\n <p>Sie können Ihren Text mit Markdown formatieren. Eine vollständige Dokumentation finden Sie unter: <a href=\"http://johnmacfarlane.net/pandoc/demo/example9/pandocs-markdown.html\" target=\"_blank\">Pandocs Markdown<\/a> <br />Bitte beachten Sie, dass LaTeX-Befehle nur begrenzt (und nur innerhalb einer Mathe-Umgebung) verwendet werden können.<\/p>\n <\/div>\n <\/div>\n <textarea class=\"solution-field codemirror-area\" cols=\"40\" id=\"solution_solution_parts_attributes_0_text\" name=\"solution[solution_parts_attributes][0][text]\" rows=\"20\">// Kommentierte Register mit Berechnungen, unten mit gegebenen Variaben.

int dummy(int y, int* z)
 {
 asm (
01 "movl 0x8(%ebp), %ecx\\n“ 
 //%eax=? ; %ecx=y ; %edx=?
02 "movl 0xc(%ebp), %eax\\n" 
 //%eax=z ; %ecx=y ; %edx=?
03 "movl (%eax), %edx\\n" 
 //%eax=z ; %ecx=y ; %edx=z
04 "xorl %eax, %eax\\n“ 
 //%eax=0 ; %ecx=y ; %edx=z
05 "addl %edx, %eax\\n" 
 //%eax=z ; %ecx=y ; %edx=z
06 "imull %ecx, %eax\\n" 
 //%eax=y*z ; %ecx=y ; %edx=z
07 "andl %eax, %edx\\n" 
 //%eax=y*z ; %ecx=y ; %edx=(y*z)&z
08 "leal (, %eax, 4), %eax\\n" 
 //%eax=4(y*z) ; %ecx=y ; %edx=(y*z)&z
09 "notl %eax\\n" 
 //%eax=~4(y*z) ; %ecx=y ; %edx=(y*z)&z
10 "andl $15, %eax\\n" 
 //%eax=~4(y*z)&15 ; %ecx=y ; %edx=(y*z)&z
11 "imull %eax, %edx\\n" 
 //%eax=~4(y*z)&15 ; %ecx=y ; %edx=((y*z)&z) * (~4(y*z)&15)
12 "movl 0xc(%ebp), %eax\\n" 
 //%eax=z ; %ecx=y ; %edx=((y*z)&z) * (~4(y*z)&15)
13 "movl %edx,(%eax)\\n" 
 //%eax=*((y*z)&z) * (~4(y*z)&15) ; %ecx=y ; %edx=((y*z)&z) * (~4(y*z)&15)
14 "xorl %eax, %eax\\n" 
 //%eax=0 ; %ecx=y ; %edx=((y*z)&z) * (~4(y*z)&15)

 );
 }
 
 int main()
 {
 int a = 10;
 int temp = dummy(2, &a);
 printf("Rueckgabe von dummy(2, &a) fuer a == 10: %d (Inhalt von eax)\\n",
 temp);
 printf("Neuer Wert von a: %d\\n", a);
 return 0;
 }


//Mit Variablen:


//y=2, *z= *a (=10)

int dummy(int y, int* z)
 {
 asm (
01 "movl 0x8(%ebp), %ecx\\n“ //%eax=? ; %ecx=2 ; %edx=?
02 "movl 0xc(%ebp), %eax\\n" //%eax=0xA ; %ecx=2 ; %edx=?
03 "movl (%eax), %edx\\n" //%eax=0xA ; %ecx=2 ; %edx=10
04 "xorl %eax, %eax\\n“ //%eax=0 ; %ecx=2 ; %edx=10
05 "addl %edx, %eax\\n" //%eax=10 ; %ecx=2 ; %edx=10
06 "imull %ecx, %eax\\n" //%eax=20 ; %ecx=2 ; %edx=10
07 "andl %eax, %edx\\n" //%eax=20 ; %ecx=2 ; %edx=0
08 "leal (, %eax, 4), %eax\\n" //%eax=80 ; %ecx=2 ; %edx=0
09 "notl %eax\\n" //%eax=47 ; %ecx=2 ; %edx=0
10 "andl $15, %eax\\n" //%eax=15 ; %ecx=2 ; %edx=0
11 "imull %eax, %edx\\n" //%eax=15 ; %ecx=2 ; %edx=0
12 "movl 0xc(%ebp), %eax\\n" //%eax=0xA ; %ecx=2 ; %edx=0
13 "movl %edx,(%eax)\\n" //%eax=0xA ; %ecx=2 ; %edx=0
 (speicher Wert von %edx in Register 0xA)
14 "xorl %eax, %eax\\n" //%eax=0 ; %ecx=2 ; %edx=0

 );
 } <\/textarea>\n <\/div>\n <\/div>\n<\/div>\n<script type=\'text/javascript\'>\n //<![CDATA[\n applicationScripts.solutions.initializeSolutionPartFormFields(\".solution-part.exercise_part_5422\");\n //]]>\n<\/script><\/div>\n<div class=\"row\"><div class=\"col-sm-12\"><div class=\"form-actions\"><input class=\"btn btn-success btn-block\" id=\"solution_submit\" name=\"commit\" type=\"submit\" value=\"Lösung speichern\" />\n<a class=\"btn btn-default btn-block\" href=\"#\" onclick=\"jQuery.ajax({data:\'authenticity_token=\' + encodeURIComponent(\'3+RYLDLpI0qx1kB8a1t/jLpyu35y9iPt/eAutMjLsl4=\'), dataType:\'script\', type:\'get\', url:\'/common/exercises/3704/solutions/109469\'}); return false;\">Abbrechen<\/a>\n<\/div><\/div><\/div>\n<\/form>');
rjsHelpers.scrollToElement('#solution', 0);
rjsHelpers.scrollToElement('#solution', 0);