ווטסאפ - לינוקס, BSD, קוד פתוח ותוכנה חופשית בעברית. Whatsup - Linux, BSD, open source and free software in Hebrew

 
 
  כניסת חברים · רישום · שכחתי סיסמה  
tux the penguin
תגובה לנושא
צפיה בנושא הבא Printable version התחבר כדי לבדוק הודעות פרטיות צפיה בנושא הקודם
ik_5לא בפורום כעת ת.הצטרפות: 16/04/2002 · הודעות: 3027 · מיקום: ישראל
 

הודעה פורסם: 07/09/2010 - 18:09
נושא ההודעה: תכנות C עם label ו assembler

יש לי שאלה למטרת לימוד יותר מאשר משהו פרקטי כרגע.
כתבתי את הקוד הבא בפסקל, ואני לא מבין עד הסוף איך לתרגם את החלק של asm לשפת C ואשמח אם תוכלו לעזור לי:

קוד:
{$GOTO ON}{$asmmode att}
label _a_label;
label _end;

var
  i : integer;
begin
  i := -10;

_a_label:
  inc(i);
  writeln('in a_label');
  if i > 10 then goto _end;

asm
  jmp _a_label
end;

_end:
  writeln('Bye');
end.


מה שלא ברור לי הוא איך אני מעביר ומשתמש בעצם בכתובת של _a_label בתוך הפרוצדורה של asm שמגיעה עם gcc.
 
 צפיה בפרופיל המשתמש שלח הודעה פרטית ביקור באתר המפרסם  
תגובה  עם ציטוט חזרה למעלה
חזרה לתוכן הדיון
אורח · ·
 

הודעה פורסם: 07/09/2010 - 18:44
נושא ההודעה:

אין צורך באסמבלי, תעשה פשוט
קוד:
goto _a_label;
 
   
תגובה  עם ציטוט חזרה למעלה
חזרה לתוכן הדיון
ik_5לא בפורום כעת ת.הצטרפות: 16/04/2002 · הודעות: 3027 · מיקום: ישראל
 

הודעה פורסם: 07/09/2010 - 18:57
נושא ההודעה:

Anonymous :
אין צורך באסמבלי, תעשה פשוט
קוד:
goto _a_label;


המטרה היא ללמוד להעביר נתונים נכון ל asm יותר משאר לכתוב נכון את הקוד כרגע.

יכולתי לעשות גם את הקוד פסקל פשוט יותר ולהכניס למשל קפיצה אל ה label באסמבלר רק אם המספר קטן או שווה מ10.
 
 צפיה בפרופיל המשתמש שלח הודעה פרטית ביקור באתר המפרסם  
תגובה  עם ציטוט חזרה למעלה
חזרה לתוכן הדיון
kzamirלא בפורום כעת ת.הצטרפות: 25/12/2004 · הודעות: 76 ·
 

הודעה פורסם: 07/09/2010 - 19:03
נושא ההודעה:

תנסה כך:

קוד:
#include <stdio.h>

int
main (int argc, char* argv[]) {
    printf ("Hello world \n");
   
    asm("jmp _a_label");

    printf ("By once \n");
   
    asm("_a_label:");
   
    printf ("By twice \n");
   
    return 0;
}
 
 צפיה בפרופיל המשתמש שלח הודעה פרטית ביקור באתר המפרסם  
תגובה  עם ציטוט חזרה למעלה
חזרה לתוכן הדיון
צפריראורח · ·
 

הודעה פורסם: 07/09/2010 - 19:34
נושא ההודעה:

קובי, אבל אז התווית לא זמינה לקוד C. אלא אם כן אתה מוסיף לפני תווית של C.
 
   
תגובה  עם ציטוט חזרה למעלה
חזרה לתוכן הדיון
kzamirלא בפורום כעת ת.הצטרפות: 25/12/2004 · הודעות: 76 ·
 

הודעה פורסם: 07/09/2010 - 19:51
נושא ההודעה:

צפריר :
קובי, אבל אז התווית לא זמינה לקוד C. אלא אם כן אתה מוסיף לפני תווית של C.


אתה מכיר דרך יותר אלגנטית ?
 
 צפיה בפרופיל המשתמש שלח הודעה פרטית ביקור באתר המפרסם  
תגובה  עם ציטוט חזרה למעלה
חזרה לתוכן הדיון
moragosאורח · ·
 

הודעה פורסם: 07/09/2010 - 23:10
נושא ההודעה:

אני חושב שפה תמצא את מה שאתה מחפש
http://users.ece.utexas.edu/~valvano/embed/chap12/chap12.htm#MIXTURE
 
   
תגובה  עם ציטוט חזרה למעלה
חזרה לתוכן הדיון
LemonLimeלא בפורום כעת ת.הצטרפות: 04/08/2008 · הודעות: 663 · מיקום: גורגוניה
 

הודעה פורסם: 08/09/2010 - 01:11
נושא ההודעה:

קוד:
#include <stdio.h>
#include <stdlib.h>

int i;

int main ()
{
        i = -10;

a_label:
        i++;
        printf ("in a_label\n");
        if (i > 10)
                goto end;

        __asm__ ("jmp %l0" : : "i" (&&a_label));

end:
        printf ("bye\n");

        return EXIT_SUCCESS;
}
 
 צפיה בפרופיל המשתמש שלח הודעה פרטית שלח דוא\ MSN Messenger מספר ICQ 
תגובה  עם ציטוט חזרה למעלה
חזרה לתוכן הדיון
ik_5לא בפורום כעת ת.הצטרפות: 16/04/2002 · הודעות: 3027 · מיקום: ישראל
 

הודעה פורסם: 08/09/2010 - 09:01
נושא ההודעה:

תודה LemonLine . אשמח הסבר קצר על מה שעשית, כלומר למה 2 נקודותיים, ולמה אתה שולח 2 כתובות בעצם עם ה &.
 
 צפיה בפרופיל המשתמש שלח הודעה פרטית ביקור באתר המפרסם  
תגובה  עם ציטוט חזרה למעלה
חזרה לתוכן הדיון
הצגת הודעות מלפני:     
מעבר אל:  
כל הזמנים הם GMT + 2 שעות
תגובה לנושא
צפיה בנושא הבא Printable version התחבר כדי לבדוק הודעות פרטיות צפיה בנושא הקודם
PNphpBB2 © 2003-2004 

תוכן הדיון

  1. ik_5
  2. אורח
  3. ik_5
  4. kzamir
  5. אורח [צפריר]
  6. kzamir
  7. אורח [moragos]
  8. LemonLime
  9. ik_5